如何在 PHP 中比较单个日期和多个日期
Posted
技术标签:
【中文标题】如何在 PHP 中比较单个日期和多个日期【英文标题】:How to compare single date with multiple dates in PHP 【发布时间】:2014-08-07 10:02:18 【问题描述】:如何在 php 中比较两个日期? 我有以下日期。一个来自 DB。另一个来自 Datepicker
$dbdate = 01-06-201402-06-201403-04-201405-06-2014 //DB date
$datepickerDate = 06-06-2014 //Datepicker date.
这里$dbdate
在 foreach 循环中,两种格式都是 dd-mm-yyyy。如何将 datepicker 中的单个日期与 $dbdate
中的日期进行比较?
【问题讨论】:
那么,$dbdate
是日期的串联?
循环比较还是 $dbdate 是一个包含多个日期的字符串?
信息不足。展示您迄今为止尝试过的内容?
是的 $dbdate 有日期的串联...
【参考方案1】:
与 STRTOTIME 这样的 for 循环中的函数进行比较
return STRTOTIME($dbdate) === STRTOTIME($datepickerDate);
【讨论】:
或者你可以做return STRTOTIME($dbdate) === STRTOTIME($datepickerDate);
。
@Jerodev 感谢您的建议【参考方案2】:
最好的办法是全部转换为 unix 时间戳.. php 方法是 strtotime() 然后它返回整数值...你可以比较这些值 http://www.php.net//manual/en/function.strtotime.php 但问题是你的 dbdate 一次解析超过 1 个日期。你应该一次得到 1 个日期
【讨论】:
【参考方案3】:这不是一个理想的解决方案 - 但我希望它可以帮助你;-)。
<?php
// Input
$dbdate = '01-06-201402-06-201403-04-201405-06-2014';
$datepickerDate = '06-06-2014';
// Please note: it would be possible to check dates directly in this for loop.
// For educational purposes I splitted it.
$datepickerDateTime = strtotime($datepickerDate);
// Transform concatenated dates to separate dates in array.
$datesList = array();
$dateOffset = 10;
for($iCurrentDateOffset = 0; $iCurrentDateOffset < strlen($dbdate); $iCurrentDateOffset += $dateOffset)
$datesList[] = substr($dbdate, $iCurrentDateOffset, $dateOffset);
// Compare each separate date to $datepickerDate
foreach($datesList as $date)
if(strtotime($date) < $datepickerDateTime)
echo("$date is before $datepickerDate<br />");
else if(strtotime($date) == $datepickerDateTime)
echo("$date is equal to $datepickerDate<br />");
else if(strtotime($date) > $datepickerDateTime)
echo("$date is past $datepickerDate<br />");
// ...
输出是:
01-06-2014 早于 06-06-2014 02-06-2014 早于 06-06-2014 03-04-2014 早于 06-06-2014 05-06-2014 早于 06-06-2014【讨论】:
以上是关于如何在 PHP 中比较单个日期和多个日期的主要内容,如果未能解决你的问题,请参考以下文章
如何使单个 UISegmentedControl 部分检测多个触摸