php中2天和48小时的区别是什么
或php中2天和48小时的区别是什么,php,date,Php,Date,或 $new_date=date('Y-m-d',strottime(+48小时)); 它们是相同的还是不同的 它们是相同的还是不同的 他们完全不同客观地说,2天并不总是等于48小时 考虑跨越夏令时边界 例如,2019-04-07T02:00:00+1100(AEDT->AEST) $twoday=新的日期间隔('P2D'); $fortyEightHours=新的日期间隔('PT48H'); $ref=新日期时间不可变('2019-04-07T01:00:00', 新日期时区(“澳大利亚/墨
$new_date=date('Y-m-d',strottime(+48小时));
它们是相同的还是不同的
它们是相同的还是不同的
他们完全不同客观地说,2天并不总是等于48小时
考虑跨越夏令时边界
例如,2019-04-07T02:00:00+1100
(AEDT->AEST)
$twoday=新的日期间隔('P2D');
$fortyEightHours=新的日期间隔('PT48H');
$ref=新日期时间不可变('2019-04-07T01:00:00',
新日期时区(“澳大利亚/墨尔本”);
echo“Reference:”,$ref->format('r'),PHP_EOL;
echo'Plus 2 days:',$ref->add($twoday)->format('r'),PHP_EOL;
echo“加上48小时:”,$ref->add($fortyeyighthours)->格式('r'),PHP_EOL;
这就产生了
参考:太阳,2019年4月7日01:00:00+1100
加上2天:2019年4月9日星期二01:00:00+1000
加48小时:2019年4月9日星期二00:00:00+1000
注意,由于某些原因,HHVM会产生不同的结果
演示~
这张与日期/时间相关的常见错误列表值得一看~
值得指出的是,使用相同的参考日期并使用
strotime()
对其进行操作会产生与上述结果不同的结果
演示~
我怀疑这是因为它的相对时间计算不像
DateInterval
那样细致,语义上它们是不同的,如另一个答案中的所示。这意味着在其他一些解释这种差异的库中,这种差异是真实存在的
但是,的实现并没有考虑到这一点,因此以您的示例为例,这并没有什么区别
我感兴趣的是,是否可以通过源代码进行后续操作,因此:
strtotime()的实现实现了以下功能:
+2天
或+48小时
,这两个标记都是+48小时内完成的,还是在+2天内完成的。因此,这没有什么区别
TLDR:strotime()在进行转换时不考虑时区,因此在该函数中,它没有任何区别,即使它确实应该这样做。像这样回显
回显日期('Y-m-d H:i:s',strotime(+48小时))代码>并检查差异并非每天都是24小时。夏令时。两天48小时在现实生活中根本不一样。诚然,他们经常是这样,但没有这样的保证。也就是说,你试过什么?你的结果是什么?出于好奇:你真正的问题是什么?strotime(“+2天”)
它将增加2天的时间strotime(“+48小时”)
它将增加48小时的时间,这正是我想要的X+1的d答案,考虑到这个问题是关于strotime(),您的代码不应该使用相同的函数来演示这个问题吗?@eis我能看到的唯一问题是“在php中2天和48小时有什么区别?”。OP只是提供了一个例子,但我不认为他们在寻找一个strotime()
特定的答案除了上面@Phil提到的以外,最好使用PHP提供的DateTime功能,而不是strotime。我猜strotime的代码中有固定的常量,这会使表达式等效,即使它们在语义上不应该是
$new_date = date('Y-m-d', strtotime("+2 days"));