【问题标题】:Want to display the current date/time想要显示当前日期/时间
【发布时间】:2010-10-07 02:27:24
【问题描述】:

嗨,我正在通过 odbc 使用 php 和 sql 来编写程序,但我有点卡在我想以 date('Ymd H:i:s) 格式显示当前日期/时间的部分,但是它只显示格林威治标准时间。我想增加 8 小时。你们中的任何人都可以帮助我吗。非常感谢

【问题讨论】:

    标签: php sql datetime


    【解决方案1】:

    查看date_default_timezone_set。您可以执行以下操作:

    date_default_timezone_set('America/Los_Angeles');
    print 'Current datetime is: ' . date('Y-m-d H:i:s');
    

    您可以使用它将时区设置为您需要时间到达的任何时区,然后正常使用date。或者,您可以使用strtotime

    print 'Current datetime is: ' date('Y-m-d H:i:s', strtotime('+8 hours'));
    

    【讨论】:

    • 是的,但这仅显示格林威治标准时间我想要的时间快 8 小时
    • 您可以将时区设置为您想要的任何时区并获得正确的时间。
    • 或者您可以使用我提出的第二种方法,将当前时间简单地添加8小时。
    【解决方案2】:

    如果您正在寻找一种在用户本地时间显示时间戳的方法,您可以使用 JavaScript:

    function showtime(t)
    {
        if (t == 0)
        {
            document.write("never");
            return;
        }
    
        var currentTime = new Date(t);
        var month = currentTime.getMonth() + 1;
        var day = currentTime.getDate();
        var year = currentTime.getFullYear();
        var hours = currentTime.getHours();
        var minutes = currentTime.getMinutes();
        var seconds = currentTime.getSeconds();
        document.write();
        if (minutes < 10){
        minutes = "0" + minutes;
        }
        if (seconds < 10){
        seconds = "0" + seconds;
        }
        document.write(month + "/" + day + "/" + year + "&nbsp;&nbsp;&nbsp;" +
                    hours + ":" + minutes + ":" + seconds + " ");
        if(hours > 11){
        document.write("PM");
        } else {
        document.write("AM");
        }
    }
    

    如果你需要显示时间,只需在 HTML 中调用它并从 PHP 中拼接值:

    <script type="text/javascript">showtime(<?=$time."000"?>)</script>
    

    【讨论】:

      【解决方案3】:

      我会避开时区方法。

      如果我理解正确,你想增加时间,从而改变它。例如,现在已经创建了一个任务,并且必须在 8 小时内完成。 timezone 方法只会更改日期和时间的显示。仅当您知道访问者的时区时才更改时区设置,并且日期时间必须相对于他们显示。

      现在:1234418228 在蒙特利尔是 2009/02/12 00:57:08,在旧金山是 2009/02/11 09:57:08。这是完全相同的时刻。

      附加到第一个答案,date() 和 strtotime() 是你的朋友。

      strtotime("+8 小时", $now ) $now 是它应该关联的时间戳。因此,如果您的开始时间不是 time(),您仍然可以使用它。例如

      strtotime( "+8 hours", strtotime( "2009/03/01 00:00:00" ); (8AM on 2009/03/01)
      

      但是,在处理以周或更短时间计算的间隔时,我更喜欢“数学”来处理

      $StartTime = strtotime( "2009/03/01 13:00:00" );
      $EndTime = $StartTime + ( 8 * 60 * 60 );
      date( "Y/m/d H:i:s", $EndTime ) ==> "2009/03/01 21:00:00"
      

      一小时 3600 秒,一天 86400 秒。

      您不能在几个月、几个季度或几年内使用此方法,因为它们持续的秒数会因时间而异。

      【讨论】:

        【解决方案4】:

        如果您想使用某个时区的时间,则首选使用 date_default_timezone_set()。无论如何,您可以为 date() 函数提供另一个参数:int 时间戳。一个整数,表示您希望 date() 返回有关信息的时间戳。 所以如果你现在想显示 date('Y-m-d H:i:s') 你可以使用这个:

        $now = date('Y-m-d H:i:s', time() ); // time() returns current timestamp.
        // if you omit the second parameter of date(), it will use current timestamp
        // by default.
        $_8hoursLater = date('Y-m-d H:i:s', time()+60*60*8 );
        $_8hoursBefore = date('Y-m-d H:i:s', time()-60*60*8 );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-10
          • 1970-01-01
          • 2012-02-03
          相关资源
          最近更新 更多