Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带CET/CEST的日期时间字符串_Php_Mysql_Sql_Datetime_Data Conversion - Fatal编程技术网

Php 带CET/CEST的日期时间字符串

Php 带CET/CEST的日期时间字符串,php,mysql,sql,datetime,data-conversion,Php,Mysql,Sql,Datetime,Data Conversion,我在PHP中将字符串转换为datetime时遇到一些困难 字符串可以以CEST和CET作为时区结束,所以我想我必须在这之前分开?我不想存储CET或CEST。我只想把日期转换成日期时间 这是字符串: 2017年12月27日,CET时间22:46:15和2017年12月27日,CEST时间22:46:15 而且,字符串中的空格是,而不是规则空格。因此,在HTML中,它如下所示: 2017年12月27日,CET时间22:46:15和2017年12月27日,CEST时间22:46:15 我希望将其转换为

我在PHP中将字符串转换为datetime时遇到一些困难

字符串可以以CEST和CET作为时区结束,所以我想我必须在这之前分开?我不想存储CET或CEST。我只想把日期转换成日期时间

这是字符串:

2017年12月27日,CET时间22:46:15
2017年12月27日,CEST时间22:46:15

而且,字符串中的空格是
,而不是规则空格。因此,在HTML中,它如下所示:

2017年12月27日,CET时间22:46:15
2017年12月27日,CEST时间22:46:15

我希望将其转换为:
2017-12-27 22:46:15
,然后将其插入我的数据库。我在SQL查询(我的列名为lastlogin)中找到了如何更改此项的方法,并通过以下操作实现了这一点:

STR\u TO\u DATE(子字符串索引(替换(lastlogin,char(160),'','C',1),'%b%d%Y,%T')

但我真的很想用PHP来实现这一点。假设我的带有日期的变量名为
$lastlogin
,我如何将该SQL逻辑应用于我的PHP?SQL中的
char(160)
就是
,我对PHP不太清楚

编辑: 我将它存储在$character->lastlogin变量中。(注意:显然它得到的是
 ;
而不是

告诉我此错误:
致命错误:未捕获错误:调用布尔值上的成员函数format()

您应该使用


我收到以下错误:
致命错误:未捕获错误:调用
中布尔值上的成员函数format()。我认为它不会将其识别为字符串中带有
的日期。我也不想改变时区。不管是CEST还是CET。我只想抓取之前的日期和时间(即使它有1小时的差异)。你的日期字符串是什么?因为您提供了不正确的日期字符串,您应该确保它的格式为2017年12月27日、CET 22:46:15、2017年12月27日、CEST 22:46:15等等。正如我在上面所写的,它是HTML格式的字符串。它使用
而不是普通空格。现在我尝试了以下方法:
$datetime=datetime::createFromFormat('mdy,H:I:se',str_replace(“,”,$lastlogin))
$output=$datetime->格式('Y-m-dh:i:s')
但是它说它是一个布尔值?字符串是:
2017年12月27日,CET时间22:46:15
在解析之前最好用
日期时间替换字符串,
$str=str\u replace(“”,,$str)
$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');
// 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