我比较两个日期有问题,不知道出了什么问题。我正在解析一个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小问题或其他您可能不希望在那里出现的东西,那么这应该真正规范化日期。