我在bKash付款网关部分遇到了这个问题。在创建付款部分bKash中,按以下格式返回paymentCreateTime字符串。
2020-01-07T11:55:34:438 GMT+0600
如何将其转换为2020-01-07 11:55:34
?
我发现了以下解决方案。
$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()
功能的解决方案吗?
您可以这样使用它
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
您可以使用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');
这将干净地交付您可以随意设置格式的对象。
这里是demonstration:
$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"
}