字符串到日期时间 CET/CEST
String to datetime with CET/CEST
我在将字符串转换为 PHP 中的日期时间时遇到了一些困难。
字符串可以同时以 CEST 和 CET 作为时区结尾,所以我想我必须在此之前以某种方式拆分?我不想存储 CET 或 CEST。我只想将日期转换为日期时间。
这是字符串:
Dec 27 2017, 22:46:15 CET
和 Dec 27 2017, 22:46:15 CEST
而且,字符串中的空格是
而不是常规空格。所以在 HTML 中它看起来像这样:
Dec 27 2017, 22:46:15 CET
和 Dec 27 2017, 22:46:15 CEST
我希望将其转换为:2017-12-27 22:46:15
,然后将其插入到我的数据库中。我想出了如何在 SQL 查询中更改它(我的专栏名为 lastlogin),我通过这样做来做到这一点:
STR_TO_DATE(SUBSTRING_INDEX(REPLACE(lastlogin,char(160),' '),'C',1), '%b %d %Y, %T')
但我真的很想在 PHP 中这样做。那么假设我的日期变量称为 $lastlogin
,我将如何将 SQL 逻辑应用到我的 PHP? SQL中的char(160)
是
,我不确定PHP。
编辑:
我将它存储在 $character->lastlogin 变量中。 (注意:显然它得到的是  
而不是
)
$character->lastlogin = str_replace(' ', ' ', $character->lastlogin);
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', $character->lastlogin);
$character->lastlogin = $datetime->format('Y-m-d H:i:s');
给我这个错误:Fatal error: Uncaught Error: Call to a member function format() on boolean
你应该使用DateTime::createFromFormat
// CET Timezone (+01:00)
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', 'Dec 27 2017, 22:46:15 CET');
// change timezone to UTC (+00:00) (if necessary)
$datetime->setTimeZone(new DateTimeZone('UTC'));
$output = $datetime->format('Y-m-d H:i:s');
// output: 2017-12-27 21:46:15
我在将字符串转换为 PHP 中的日期时间时遇到了一些困难。
字符串可以同时以 CEST 和 CET 作为时区结尾,所以我想我必须在此之前以某种方式拆分?我不想存储 CET 或 CEST。我只想将日期转换为日期时间。
这是字符串:
Dec 27 2017, 22:46:15 CET
和 Dec 27 2017, 22:46:15 CEST
而且,字符串中的空格是
而不是常规空格。所以在 HTML 中它看起来像这样:
Dec 27 2017, 22:46:15 CET
和 Dec 27 2017, 22:46:15 CEST
我希望将其转换为:2017-12-27 22:46:15
,然后将其插入到我的数据库中。我想出了如何在 SQL 查询中更改它(我的专栏名为 lastlogin),我通过这样做来做到这一点:
STR_TO_DATE(SUBSTRING_INDEX(REPLACE(lastlogin,char(160),' '),'C',1), '%b %d %Y, %T')
但我真的很想在 PHP 中这样做。那么假设我的日期变量称为 $lastlogin
,我将如何将 SQL 逻辑应用到我的 PHP? SQL中的char(160)
是
,我不确定PHP。
编辑:
我将它存储在 $character->lastlogin 变量中。 (注意:显然它得到的是  
而不是
)
$character->lastlogin = str_replace(' ', ' ', $character->lastlogin);
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', $character->lastlogin);
$character->lastlogin = $datetime->format('Y-m-d H:i:s');
给我这个错误:Fatal error: Uncaught Error: Call to a member function format() on boolean
你应该使用DateTime::createFromFormat
// CET Timezone (+01:00)
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', 'Dec 27 2017, 22:46:15 CET');
// change timezone to UTC (+00:00) (if necessary)
$datetime->setTimeZone(new DateTimeZone('UTC'));
$output = $datetime->format('Y-m-d H:i:s');
// output: 2017-12-27 21:46:15