在PHP中给出以下字符串:
$startDate = "2015-12-17";
$startTime = "11:16 AM";
$startTimezone = "(GMT +00:00) Dublin, London";
$endDate = "2017-12-17";
$endTime = "11:16 AM";
$endTimezone = "(GMT -06:00) Central Time";
格式始终为:
日期的YYYY-MM-DD
HH:MM AM | PM当时
确定是否是最好的方法:
我猜测使用PHP DateTime类并比较它们,但不确定如何为我的用例构建它?
答案 0 :(得分:2)
我没有测试它,但它应该是这样的:
$startDate = "2015-12-17";
$startTime = "11:16 AM";
$startTimezone = "+0000";
$endDate = "2017-12-17";
$endTime = "11:16 AM";
$endTimezone = "-0600";
$start = DateTime::createFromFormat("Y-m-d h:i A O", $startDate . ' ' . $startTime . ' ' . $startTimezone);
$end = DateTime::createFromFormat("Y-m-d h:i A O", $endDate . ' ' . $endTime . ' ' . $endTimezone);
$now = new DateTime();
if ($start > $now && $end > $now && $start < $end) {
// do stuff
}
正如您所看到的,我使用了不同的时区格式。你可以自己选择一个。请参阅本页面的时区部分:http://php.net/manual/en/function.date.php
答案 1 :(得分:0)
试试这个,
<?php
$startDate = "2015-12-18";
$startTime = "3:53 PM";
$endDate = "2017-12-17";
$endTime = "11:16 AM";
$reset = date_default_timezone_get();
date_default_timezone_set('America/New_York');
$start = strtotime($startDate.$startTime);
$end = strtotime($endDate.$endTime);
$curTime = strtotime(now);
date_default_timezone_set($reset);
if($st_time < $curTime)
{
// Start time is less than current time - not past
}
if($end < $curTime)
{
// End time is less than current time - not past
}
if($end < $start)
{
// End time is less than start time
}
?>
Some other methods在那里,但我在我的一个项目中试过这个并且没有任何问题。
我希望这会有所帮助。