【问题标题】:Why my day is one day less from unix timestamp in php为什么我的一天比 php 中的 unix 时间戳少一天
【发布时间】:2017-05-04 10:31:10
【问题描述】:

我正面临这个问题,我的date 显示少一天我有这个unix timestamp 1275429600 应该是02-06-2010 但它显示01-06-2010 p>

我的预期输出: 02-06-2010 但得到 01-06-2010

这是我尝试过的代码。

$timestamp=1275429600;

echo gmdate("d-m-Y", $timestamp);

【问题讨论】:

  • 你的时区设置呢?因为127542960001 Jun 2010 22:00:00 GMT/UTC,所以预期的输出不应该是02-06-2010
  • 使用date_default_timezone_set 设置默认时区..
  • 我在亚洲时区,即亚洲/加尔各答
  • @MarkBaker 先生,这里是演示phpio.net/s/3teg
  • @EaB 是的,“测试”返回 01-06-2010 这是正确的;你错误地认为它应该是02-06-2010

标签: php datetime timestamp


【解决方案1】:

试试这个希望这会对你有所帮助。

希望文档的第一行 gmdate 能够说明一切。

gmdate is Identical to the date() function except that the time returned is Greenwich Mean Time (GMT).

<?php
ini_set('display_errors', 1);
date_default_timezone_set("asia/kolkata");
echo date("d-m-Y", 1275429600);

输出: 02-06-2010

【讨论】:

    【解决方案2】:

    差异是由于您所在时区和格林威治时区的时区差异。

    gmdate 的行为与 date 方法相同,只是它返回格林威治标准时间 (GMT) 返回的时间。

    GMT: Tue, 01 Jun 2010 22:00:00 GMT
    Your time zone: 2010-6-2 03:30:00 GMT+5:30
    

    【讨论】:

      【解决方案3】:

      检查时区 echo date_default_timezone_get();

      你可以设置时区

      date_default_timezone_set(timezone);

      【讨论】:

        【解决方案4】:

        gmdate 是 GMT 日期,而不是您所在时区的日期。

        因此您需要使用Date('Z'),其中z 是零UTC 偏移的区域指示符。

        <?php
        date_default_timezone_set("Asia/Kolkata");
        $timestamp=1275429600;
        
        echo gmdate("d-m-Y", $timestamp + date("Z"));
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-15
          • 1970-01-01
          相关资源
          最近更新 更多