php-时区调整

php-时区调整,php,datetime,date,time,timezone,Php,Datetime,Date,Time,Timezone,好的,我有一个代码,它列出了日期: $dates = array(); for($i = 1; $i < 10; $i++) { $datetime = mktime(12, 0, 0, date('n'), date('j') + $i, date('Y')); if(date('N', $datetime) != 6 && da

好的,我有一个代码,它列出了日期:

$dates = array();
                for($i = 1; $i < 10; $i++)
                {
                    $datetime = mktime(12, 0, 0, date('n'), date('j') + $i, date('Y'));
                    if(date('N', $datetime) != 6 && date('N', $datetime) != 7)
                    {
                        $dates[date('l, F jS', $datetime)] = date('l, F jS', $datetime);
                    }
                }
$dates=array();
对于($i=1;$i<10;$i++)
{
$datetime=mktime(12,0,0,日期('n'),日期('j')+$i,日期('Y'));
如果(日期('N',$datetime)!=6和日期('N',$datetime)!=7)
{
$dates[日期($l,F jS',$datetime)]=日期($l,F jS',$datetime);
}
}
日期是明天,只要不是周六或周日

现在的问题是“明天”在美国东部时间晚上8点左右被改变


要解释,就说今天是星期三。列表中的第一个选项应该是星期四。然而,一旦是美国东部时间晚上8:00,那么第一个选择就是星期五。与其在美国东部时间晚上8:00换机,我希望它在美国东部时间凌晨3:00换机(因此在周四凌晨2:00时,它仍应提供周四作为选择)

我认为您目前正在混淆时区。美国东部夏令时晚上8点=UTC午夜

无论如何,在PHP5.3中:

$one_day = new DateInterval('P1D');
$tz = new DateTimeZone('America/New_York');
$start = new DateTime('now', $tz);

if ($start->format('G') >= 3)
  $start->add($one_day);

foreach (new DatePeriod($start, $one_day, 10) as $date)
{
  if ($date->format('N') < 6)
    echo $date->format('l, F jS')."\n";
}
我认为这应该行得通

$one_day = 86400;
date_default_timezone_set('America/New_York');
$start = time();

if (date('G', $start) >= 3)
  $start += $one_day;

for ($i = 0, $date = $start; $i < 10; ++$i, $date += $one_day)
{
  if (date('N', $date) < 6)
    echo date('l, F jS', $date)."\n";
}