我有以下变量,其中包含 MM-DD-YYYY 格式的日期。我想将此日期与今天的日期进行比较。如果变量中包含的日期大于今天的日期,我想回显"错误",如果它小于或等于今天的日期,我想回显"成功"。对于这件事,我不想使用日期时间类。
我认为使用 UNIX 时间戳值可能是一个更好的选择。如果您有任何其他更好和有效的选择,欢迎您。
以下是包含日期的变量MM-D-YYYY format
$form_data['reg_date'] = '12-11-2014'; //This is today's date i.e. 11th December 2014
如果变量$form_data['reg_date']
包含大于今天日期(即 2014 年 12 月 11 日(的日期,则应给出错误消息,否则应回显成功消息。
谢谢。
我有以下变量,其中包含 MM-DD-YYYY 格式的日期。我想将此日期与今天的日期进行比较。
不能以格式比较日期的字符串表示形式 m-d-Y
。这种格式是无效的格式,php不会理解它。阅读手册,哪些日期格式有效。
比较字符串日期的最佳方法是将其格式设置为Y-m-d
或将字符串日期转换为 unix 时间戳整数。但是一旦你有Y-m-d
格式的日期,将其转换为 unix 时间戳是微不足道的,因此将其转换为时间戳只是为了比较是一个不必要的步骤。
将m-d-Y
转换为m/d/Y
格式,然后转换为 unix 时间戳:
$date = '12-25-2014';
$date = str_replace('-', '/', $date);
var_dump($date);
var_dump(strtotime($date));
if (strtotime($date) > strtotime('today')) echo "ERROR";
else echo "SUCCESS";
演示
但是我已经在回答您之前/相同的问题时对此进行了解释(请参阅第二个链接(。
我认为使用 UNIX 时间戳值可能是一个更好的选择。如果您有任何其他更好和有效的选择,欢迎您。
其他方法可能是使用sscanf()
功能转换格式:
$date = '12-25-2014';
sscanf($date, "%d-%d-%d", $m, $d, $Y);
$date = "$Y-$m-$d";
var_dump($date);
if ($date > date('Y-m-d')) echo "ERROR";
else echo "SUCCESS";
演示
但我仍然建议您使用DateTime类,就像我已经解释过我之前的答案一样。
请尝试以下代码
if(strtotime(date('d-m-Y')) == strtotime($form_data['reg_date'])){
echo 'Today''s Date';
}
首先,您必须将日期转换为时间戳值,例如
$date_time = strtotime("11-12-2014");
然后,您可以执行此操作以将今天的日期与您拥有的日期进行比较。
$diff = $date_time - time();
这将为您提供以秒为单位的日期差异。