比较UTC日期的问题


Issues with comparason of UTC dates

我比较两个日期有问题,不知道出了什么问题。我正在解析一个XML文件,并希望包含一个项目,如果它是在当前日期。

日期是相同的,但没有包括在内。有人能告诉我我做错了什么吗,或者我不明白?

date_default_timezone_set( "UTC" );
$unix = date( 'U', strtotime( $item['pubDate'] ) ); // $item['pubDate'] = 'Sunday, June 08, 2014 12:59:36 AM'
if(date('Y-m-d', $unix) == date("Y-m-d")){ // My date = 1402209579 - me  = 06 / 08 / 14 @ 6:39:39am UTC
  ... Expecting this item to be included as the dates are the same
}

这对我来说很奇怪,因为使用您的示例代码与Sunday, June 08, 2014 12:59:36 AM的示例日期对我来说很好。但是既然你说一些日期在XML文件中工作& &;另一些则没有,我认为这些日期中可能有一些性格上的奇怪之处。因此,我建议使用preg_replace -加上trim -在对其进行操作之前清理您的日期数据:

date_default_timezone_set( "UTC" );
$pubDate = 'Sunday, June 08, 2014 12:59:36 AM'; // $item['pubDate'] = 'Sunday, June 08, 2014 12:59:36 AM'
$pubDate_cleaned = trim(preg_replace('/[^a-zA-Z0-9,: ]/is', '', $pubDate));
$unix = date('U',strtotime($pubDate_cleaned));
if (date('Y-m-d', $unix) == date("Y-m-d")) { // My date = 1402209579 - me  = 06 / 08 / 14 @ 6:39:39am UTC
  echo 'Yes! The dates match!';
}

正则表达式/[^a-zA-Z0-9,: ]/is的想法是删除字符串中不是字母,不是数字的任何字符&而不是字符,, :或日期格式中的空格。然后trim清理左边的空间&在字符串的右边,这样就干净了。

如果在strtotime转换中存在任何unicode小问题或其他您可能不希望在那里出现的东西,那么这应该真正规范化日期。