我在比较两个日期时遇到问题,无法弄清楚出了什么问题。我正在解析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
}
答案 0 :(得分:0)
这对我来说很奇怪,因为使用样本日期为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 gremlins或其他您可能不想要的内容,则应该真正规范化日期。