这里我已经在db中存储了两个日期,比如开始日期为2014-07-07 00:00:00,结束日期为2014-07-15 23:59:59。现在我如何查看两天之间的当前日期
$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';
$now = new DateTime();
$current_time = $now->format('Y-m-d H:i:s');?>
如果从db中检索date1和date2并与从服务器获取的当前日期进行比较,如果它在两天之间,则应该从现在开始显示结束时间。
答案 0 :(得分:1)
使用:
$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';
$cdate1 = new DateTime($date1);
$vdate1 = $cdate1->getTimestamp();
$cdate2 = new DateTime($date2);
$vdate2 = $cdate1->getTimestamp();
将整数($ vdate1和$ vdate2)相互比较
结果将在几秒钟内
享受:)
答案 1 :(得分:1)
如果两个日期的格式完全相同,那么php允许进行字符串比较。
所以你可以做到以下几点:
if(strcmp($date1, $current_time) <= 0 and strcmp($date2, $current_time) > 0)
{
// The date is within the limits
}
strcmp
是一个更安全的字符串比较函数
因此,在您的情况下,您可以拥有以下内容:
<?php
$con=mysqli_connect("localhost","root","","proms"); // Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
date_default_timezone_set("America/New_York");
$current_time =date("h:i:sa");
$result = mysqli_query($con,"SELECT * FROM image");
while($row = mysqli_fetch_array($result)) {
if(strcmp($row['start_date'],$current_time) <= 0 && strcmp($row['end_date'],$current_time) > 0) {
// The date is within the limits
echo "yes";
}
}
?>
'start_date'
和'end_date'
应替换为您的字段名称。
答案 2 :(得分:1)
就像面向对象的样式替代方法一样,您可以将对象创建为DateTime类的实例,如下所示:
$date1 = new DateTime('2014-07-07 00:00:00');
$date2 = new DateTime('2014-07-15 23:59:59');
$now = new DateTime();
然后,按照您的逻辑,您可以比较now
是否在其他日期之前或之后,例如:
var_dump($date2 > $now);
或者您可以使用以下命令检索DateInterval接口的实例:
$now_interval_from_date1 = $date1->diff($now);
然后使用format
方法准确了解时间/日期等等差异,例如:
$now_interval_from_date1->format("%R%H hours")
您可以在此处找到格式参数: http://www.php.net/manual/it/dateinterval.format.php
答案 3 :(得分:0)
您可以执行以下操作来比较两个日期之间的当前时间
$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';
$now = date('Y-m-d H:i:s');
$date1TimeStamp = strtotime($date1);
$date2TimeStamp = strtotime($date2);
$nowTimeStamp = strtotime($now);
if($date1TimeStamp <= $nowTimeStamp || $date2TimeStamp >= $nowTimeStamp){
$seconds_diff = $date2TimeStamp - $nowTimeStamp;
$days = $seconds_diff/(3600*24);
}else
echo 'No, out';
编辑后的计算,现在显示从现在到结束日期的剩余天数。
答案 4 :(得分:0)
if(strtotime('now') > strtotime($date1) && strtotime('now') < strtotime($date2)) {
$diff = strtotime($date2) - strtotime('now');
}
然后 $diff
包含两个日期之间的差异(以毫秒为单位)。只需将毫秒转换为天:小时:分钟(数学?)