Php 以字符串格式比较两个日期
我可以用数字这样的字符串来比较两个日期吗?或者我应该将它们重新键入ints吗 这个代码行吗Php 以字符串格式比较两个日期,php,string,date,compare,Php,String,Date,Compare,我可以用数字这样的字符串来比较两个日期吗?或者我应该将它们重新键入ints吗 这个代码行吗 <?php $date1 = "20130102"; $date2 = "20151012"; if ($date1 < $date2){ echo "date1 < date2"; } elseif ($date1 > $date2){ echo "date1 > date2"; } else { echo "date1 = date2"; } ?
<?php
$date1 = "20130102";
$date2 = "20151012";
if ($date1 < $date2){
echo "date1 < date2";
} elseif ($date1 > $date2){
echo "date1 > date2";
} else {
echo "date1 = date2";
}
?>
在以下条件下,您的代码是安全和正确的:如果您的日期格式为Ymd(根据php的) 之所以这样做,是因为在我能想象的所有字符集中,字符0-9的排序与数字0-9的排序完全相同。如果使用前导0,则字符串排序与数字排序相同
注意:使用字符串作为日期的数据类型是一种代码味道。请参阅(no.7)在以下条件下,您的代码是安全和正确的:如果您的日期格式为Ymd(根据php的) 之所以这样做,是因为在我能想象的所有字符集中,字符0-9的排序与数字0-9的排序完全相同。如果使用前导0,则字符串排序与数字排序相同
注意:使用字符串作为日期的数据类型是一种代码味道。请参阅(no.7)确保安全,但它可能不会给出正确的结果-您只是在比较字符串-查看
strotime
。实际上,只要日期的格式如图所示,它就会给出正确的结果。但是,同意strotime
,但也要检查更面向对象的DateTime
类:只要您的值按yyyymmdd顺序排列,它就会给出正确的结果。当然它是安全的,但可能不会给出正确的结果-您只是在比较字符串-查看strotime
,它将给出正确的结果,只要日期的格式如图所示。但是,同意strotime,但也要检查更面向对象的DateTime
类:只要您的值按yyyymmdd顺序排列,它就会给出正确的结果。@user1640032如果我是您,在你测试之前,我会验证这个事实。@lonesomeday在这种情况下你会怎么做:20130104
和20130301
?这些日期以YYYYMMDD格式存储在DB中,所以它已经被验证了。对lonesomeday说:我希望它能在20130104和20130301有效,如果你的日期格式是YYYYMMDD=>20130104<20130301。@user1640032如果我是你,在你测试之前,我会验证这个事实。@lonesomeday在这种情况下你会怎么做:20130104
和20130301
?这些日期以YYYYMMDD格式存储在DB中,对于lonesomeday:我希望它能在20130104和20130301中起作用,如果这些日期的格式为YYYYMMDD=>20130104<20130301。