为了集成bKash在线支付网关API,我面临着这个问题。文档在这里- https://developer.bka.sh/docs/create-payment-1。
在“创建支付”部分,bKash按以下格式返回paymentCreateTime字符串。
2020-01-07T11:55:34:438 GMT+0600如何将其转换为2020-01-07 11:55:34以保存在MySQL中?
我找到了一个像这样的解决方案。
$input = "2020-01-07T11:55:34:438 GMT+0600" // "2020-01-07T11:55:34:438 GMT+0600"
$timestamp = substr($input,0,19); // "2020-01-07T11:55:34"
$mysql = date_format(date_create($timestamp),'Y-m-d H:i:s'); // "2020-01-07 11:55:34"但是我需要一个没有substr()函数的解决方案。
发布于 2020-01-07 09:16:32
可以使用createFromFormat()直接解析字符串。
重要的是,您需要逃离T和GMT。
https://www.php.net/manual/en/datetime.createfromformat.php中的其他一切
$input = '2020-01-07T11:55:34:438 GMT+0600';
$date = DateTime::createFromFormat('Y-m-d\Th:i:s:u \G\M\TO', $input);
echo $date->format('Y-m-d h:i:s');这将清晰地传递一个您可以随意格式化的对象。
这是一个游行示威
$date = new DateTime("now");
echo $date->format('Y-m-d\Th:i:s:u \G\M\TO');
echo "\n---\n";
$input = '2020-01-07T11:55:34:438 GMT+0600';
echo $input;
echo "\n---\n";
$date = DateTime::createFromFormat('Y-m-d\Th:i:s:u \G\M\TO', $input);
echo $date->format('Y-m-d h:i:s');
echo "\n===\n";
var_dump($date);示范产出:
2020-01-07T10:12:53:000245 GMT+0100
---
2020-01-07T11:55:34:438 GMT+0600
---
2020-01-07 11:55:34
===
object(DateTime)#2 (3) {
["date"]=>
string(26) "2020-01-07 11:55:34.438000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+06:00"
}发布于 2020-01-07 08:18:26
你可以这样用它
date_default_timezone_set("Asia/Dhaka");
$mysql1 = date_format(date_create(strtotime($input)),'Y-m-d H:i:s');它将打印2020-01-07 09:17:23
https://stackoverflow.com/questions/59624267
复制相似问题