PHP中的日期转换



我有以下格式的日期-

"Thu Jul 29 2021 17:47:12 GMT+0530 (India Standard Time)"

我想用php把这个日期转换成以下格式-

"2021-07-29T17:47:12"

到目前为止,我尝试了以下方法,但id不起作用-

//one way
$st = "Thu Jul 29 2021 17:47:12 GMT+0530 (India Standard Time)";
$st = strtotime($st);  
$date = new DateTime($st, new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone('IST'));
//other way
$st = "Thu Jul 29 2021 17:47:12 GMT+0530 (India Standard Time)";
$st = strtotime($st);  
$format = "Y-m-d";  
$newdate = date_format(date_create($st), $format);
print_r($newdate);

已经有许多问题可用于堆栈溢出本身的日期转换,但没有一个回答我的问题,因为我要转换的日期是不同的格式,所以请帮助我,如果有人可以。提前谢谢。

你可能想多了。

由于您忽略了任何时区差异,因此只需截断字符串末尾不必要的字符,然后让strtotime()解析剩下的内容。

代码(演示):

$date = 'Thu Jul 29 2021 17:47:12 GMT+0530 (India Standard Time)';
echo date('Y-m-dTH:i:s', strtotime(substr($date, 0, 24)));

输出:

2021-07-29Z17:47:12

另一个可能的解决方案:

$date = 'Thu Jul 29 2021 17:47:12 GMT+0530 (India Standard Time)';
var_dump(DateTime::createFromFormat('D M d Y H:i:s+', $date)->format('Y-m-dTH:i:s') );

输出
string(19) "2021-07-29T17:47:12"

PHP文档:

+

如果存在此格式说明符,则字符串中的尾随数据不会导致错误,而是发出警告

相关内容

  • 没有找到相关文章

最新更新