Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以字符串格式比较两个日期_Php_String_Date_Compare - Fatal编程技术网

Php 以字符串格式比较两个日期

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"; } ?

我可以用数字这样的字符串来比较两个日期吗?或者我应该将它们重新键入ints吗

这个代码行吗

<?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。