代码之家  ›  专栏  ›  技术社区  ›  Matthew

php-调整时区

  •  1
  • Matthew  · 技术社区  · 14 年前

    好吧,我有这个代码,它列出了日期:

    $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);
                        }
                    }
    

    日期是明天,只要不是星期六或星期天。

    现在的问题是“明天”会在东部时间8点左右改变。

    解释一下,假设今天是星期三。列表中的第一个选项应该是星期四。然而,一旦东部时间下午8:00,那么第一个选项是星期五。我不想在东部标准时间下午8点换车,我想在东部标准时间凌晨3点换车(所以在星期四凌晨2点换车还是可以选择星期四)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Matthew    14 年前

    $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";
    }
    

    strtotime() date()

    $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";
    }