我之前只做过绝对比较,所以我对如何处理这个问题感到有些困惑......
我有两个从PHP返回的字符串(格式为DATE_ATOM,即2012-01-20)
我需要做的是将一个字符串(日期)与另一个字符串进行比较 - 但是,我需要在以下三个条件下返回true
任何结果都会返回false。
我怎样才能以尽可能'干净'的方式做到这一点..
P.S这可以在PHP或Javascript中完成 - 只需要最干净的方式!
非常感谢提前!
答案 0 :(得分:1)
$first = strtotime($yourFirstDate);
$second = strtotime($yourSecondData);
if($first == $second OR $first == strtotime($yourSecondDate, "+1 day") OR $first == strtotime($yourSecondDate, "+2 days")) {
echo "ok with date";
}
else {
echo "out of range";
}
答案 1 :(得分:0)
这是一个很简单的方法:
$datetime1 = new DateTime('2012-03-20');
$datetime2=new DateTime('2012-03-18');
$intervalo = $datetime1->diff($datetime2);
$diferencia=$intervalo->format('%R%d');
if($diferencia>=0 && $diferencia<=2)
{
echo "OK";
}
“%R”很重要,因为如果差异是负面或正面,我们只需要积极的,我已经看到了解决方案可以提供正确但负值也是如此。
答案 2 :(得分:0)
你可以在php.net上找到答案:
面向对象的风格
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
程序风格
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
以上示例将输出:
+2 days
答案 3 :(得分:0)
JavaScript的:
var day = 86400000; // milliseconds (1000 * 60 * 60 * 24)
if ( Math.abs(new Date('2012-01-20') - new Date('2012-01-22')) <= 2 * day) {
// dates are within 2 day of each other
}
请注意,版本8之前的IE不喜欢new Date('2012-01-20')
,而是更喜欢new Date('2012/01/20')
。
答案 4 :(得分:0)
对于 javascript ,您可以这样做:
function compareDates(date1, date2)
{
date1 = date1.split('-').join('');
date2 = date1.split('-').join('');
if (date1 == date2) {return true;}
if (date1 == (+date2) + 1) {return true;}
if (date1 == (+date2) + 2) {return true;}
return false;
}
console.log( compareDates('2012-01-20', '2012-01-20') ); // true
console.log( compareDates('2012-01-21', '2012-01-20') ); // true
console.log( compareDates('2012-01-22', '2012-01-20') ); // true
console.log( compareDates('2012-01-23', '2012-01-20') ); // false
编辑A
日期现在可以采用“2012-01-20T01:02:03 + 00:00”或“2012-01-20”格式,谢谢:) ..
我不知道用户将使用哪种格式
function compareDates(date1, date2)
{
date1 = date1.substring(0,10).split('-').join('');
date2 = date2.substring(0,10).split('-').join('');
if (date1 == date2) {return true;}
if (date1 == (+date2) + 1) {return true;}
if (date1 == (+date2) + 2) {return true;}
return false;
}
console.log( compareDates('2012-01-20T01:02:03+00:00', '2012-01-20') ); // true
console.log( compareDates('2012-01-21', '2012-01-20') ); // true
console.log( compareDates('2012-01-22', '2012-01-20T01:02:03+00:00') ); // true
console.log( compareDates('2012-01-23T01:02:03+00:00', '2012-01-20T01:02:03+00:00') ); // false