Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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日期\u从\u格式创建\u返回不正确的时间_Php_Date_Datetime - Fatal编程技术网

php日期\u从\u格式创建\u返回不正确的时间

php日期\u从\u格式创建\u返回不正确的时间,php,date,datetime,Php,Date,Datetime,我正在尝试获取外部系统提供的日期,并将其转换为DateTime,以便在我的系统中使用。但是,我遇到了date_create_from_format函数的问题,导致出现错误的信息 我从另一个函数接收到一个日期和时间字符串(当我直接调用它时,我已经确认它是正确的)。该字符串用于使用格式字符串构造DateTime对象,该格式字符串与在将字符串返回给我之前为格式化该字符串而调用的格式字符串相匹配。但是,生成的DateTime对象有整整12个小时的休息时间。示例代码如下所示: var_dump($obje

我正在尝试获取外部系统提供的日期,并将其转换为DateTime,以便在我的系统中使用。但是,我遇到了date_create_from_format函数的问题,导致出现错误的信息

我从另一个函数接收到一个日期和时间字符串(当我直接调用它时,我已经确认它是正确的)。该字符串用于使用格式字符串构造DateTime对象,该格式字符串与在将字符串返回给我之前为格式化该字符串而调用的格式字符串相匹配。但是,生成的DateTime对象有整整12个小时的休息时间。示例代码如下所示:

var_dump($object->getEndTime());
//string(19) "2017-04-04 18:26 PM" 
//formatted in another function by 
//$endTime = date('Y-m-d G:i A', $endTime);
//return $endTime;

$endTime = date_create_from_format('Y-m-d G:i A', $object->getEndTime());
var_dump($endTime);
//object(DateTime)#150 (3) { ["date"]=> string(26) "2017-04-05 06:26:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "America/New_York" } 

如图所示,date_create_from_format函数似乎正在获取我的小时数值,并将其向前移动以匹配12小时的时间,而不管匹配的格式如何,然后不提供AM/PM值。关于这个函数,我有什么遗漏吗?

和时区是一样的吗?我想问题可能是
18:26 PM
不正确。那应该是下午6点26分。使用AM/PM时,小时数仅在0-12之间。@Qirel我实际上可以通过更改格式来解决问题,但如果我打印($endTime->format('Y-m-d G:I A')),它仍然显示PM。我不明白,如果字符串具有PM值,并且24小时格式的时间与PM时间戳相匹配,那么它为什么要更改匹配时间。这是因为
a
格式是AM/PM。所以,如果你有新的格式,它当然会在那里-你告诉它在那里;-)结果是正确的:午后18小时是第二天早上6点:>AM/PM(
A
)只适用于12小时格式(
g
h
)。