所以,这是交易。在过去的几个小时里,我一直在为此而奋斗,并且没有取得任何进展。我已准备好通过其中的几个,甚至尝试过叔叔谷歌,但没有快乐。
我正在开展一个项目,涉及很多夜总会和下班后的地点。因此,我们将重新定义的日期是从凌晨5点到凌晨4点59分。从现在开始/结束这段时间,我有一段时间了。它必须是时区特定的是让我搞砸的部分。
这是丑陋的,这是在几个不同的失败理论之后...我真的在这个上追逐自己的尾巴,所以任何帮助都会受到赞赏。
function util_TimeInfo($timezone, $dst){
// Get current DateTime
$dt = new DateTime();
$tz = new DateTimeZone($timezone);
$dt->setTimezone($tz);
// split to variables
$year = $dt->format('Y');
$month = $dt->format('m');
$day = $dt->format('d');
$hour = $dt->format('H');
$minute = $dt->format('i');
$second = $dt->format('s');
// Convert hour to string
$inthour = intval($hr);
// Check which day it is a part of
$mytime[0] = time();
if($inthour < 5){
$start_d = date('d', strtotime('-1 day', $mytime[0]));
$start_m = date('m', strtotime('-1 day', $mytime[0]));
$start_y = date('Y', strtotime('-1 day', $mytime[0]));
$end_d = date('d', $mytime[0]);
$end_m = date('m', $mytime[0]);
$end_y = date('Y', $mytime[0]);
} else{
$start_d = date('d', $mytime[0]);
$start_m = date('m', $mytime[0]);
$start_y = date('Y', $mytime[0]);
$end_d = date('d', strtotime('+1 day', $mytime[0]));
$end_m = date('m', strtotime('+1 day', $mytime[0]));
$end_y = date('Y', strtotime('+1 day', $mytime[0]));
}
// Create current start of day and end of day in unix timestamp
$mytime[1] = mktime('05', '00', '00', $start_m, $start_d, $start_y, $dst);
$mytime[2] = mktime('04', '59', '59', $end_m, $end_d, $end_y, $dst);
//Return times
return $mytime;
}
答案 0 :(得分:0)
这个简单的代码怎么样:
$tz = new DateTimezone('Europe/Berlin');
$now = new DateTime('now', $tz);
$start = new DateTime('today 5:00am', $tz);
$end = new DateTime('tomorrow 4:59am', $tz);
if ($now < $start) {
$start = new DateTime('yesterday 5:00am', $tz);
$end = new DateTime('today 4:59am', $tz);
}
答案 1 :(得分:0)
使用Glavic的代码作为基础,我能够使用if语句来处理我想要的时间来处理午夜和凌晨5点之间的时间。
// Get current DateTime
$dt = new DateTime();
$tz = new DateTimeZone($timezone);
$dt->setTimezone($tz);
// Set cutoff for 5am
$cutoff = new DateTime('today 5:00am', $tz);
// Adjust start/end for day
if($dt < $cutoff){
$start = new DateTime('yesterday 5:00:00am', $tz);
$end = new DateTime('today 4:59:59am', $tz);
} else{
$start = new DateTime('today 5:00:00am', $tz);
$end = new DateTime('tomorrow 4:59:59am', $tz);
}