【问题标题】:Date into timestamps conversion日期到时间戳的转换
【发布时间】:2014-09-18 04:36:13
【问题描述】:

我正在使用 xampp 服务器,并且我已将时区设置为我当前的时区。我正在尝试将日期和时间插入到我的数据库中,但在获取日期函数时存在一些问题。

日期

我现在的时间:26-07-2014 10:15:03 AM。

  1. 当我从 php date('d-m-Y , h:m:s'); 获取日期时,它向我显示了正确的时间,只是相差 6 分钟。

    date('d-m-Y , h:m:s'); 的结果: 27-07-2014 , 10:07:32

  2. 当我从date("d-m-Y g:i:s A") 获得日期时,它会显示准确的时间。

    date("d-m-Y g:i:s A"); 的结果: 27-07-2014 10:14:32 AM


时间戳

  1. 当我从 php echo strtotime("now"); 获得时间戳时,它比待机时间晚了五个小时。

    echo strtotime("now");的结果: 1406438072;

    Ater 转换: 2014 年 7 月 27 日星期日 05:14:32 GMT

  2. 当我将date('d-m-Y , h:m:s'); 转换为时间戳时,它比待机时间晚了 5 个小时。

    date('d-m-Y , h:m:s');转换后的结果: 1406437652

    转换后: 2014 年 7 月 27 日星期日 05:07:32 GMT

  3. 当我将date("d-m-Y g:i:s A"); 转换为时间戳时,它又落后了五个小时。

    date("d-m-Y g:i:s A");转换后的结果: 1406438072

    转换后: 2014 年 7 月 27 日星期日 05:14:32 GMT


我当前的时区是Asia/Karachi


问题: 谁能告诉我为什么当我将日期转换为时间戳时,我的时区落后了 5 个小时,以及将日期转换为时间戳的正确解决方案是什么?

【问题讨论】:

  • 试试这个echo strtotime(date('d-M-Y g:i:s A'));
  • 你能在你设置区域的地方贴一些代码吗?
  • 能否请您发布确切的代码和输出?虽然我并不是在暗示您的解释是错误的,但由于拼写错误,很容易在不经意间得到错误的结果。
  • 你需要检查 php.ini 的时区值.. 然后在数据库中检查 select now() 看看它为你提供了更新时区的输出
  • @ÁlvaroG.Vicario 好的,我会更新我的问题

标签: php date datetime timestamp


【解决方案1】:

您的格式/诊断 PHP 代码不正确。你周围都有这个:

d-m-Y , h:m:s
  ^       ^

同样的代码也不可能:

date('d-m-Y , h:m:s')

... 打印出这些完全不同的结果:

6-07-2014 , 05:07:47
1406333267

所以我猜你的真实代码中可能有这个和其他一些错别字。计算机对此真的很挑剔:)

【讨论】:

    【解决方案2】:

    这是时区的问题。尝试使用localtime() 函数。 或者也许使用类似函数date_timezone_set()的东西。

    【讨论】:

      【解决方案3】:

      我在租用的服务器上遇到问题,时间比我本地的时间差了两个小时。

      所以我要得到正确的时间是这样的:

      $new_time = date("Y-m-d H:i:s", strtotime('+2 hours'));

      然后我就在需要的地方使用$new_time

      像魅力一样工作。

      【讨论】:

      • 我猜你住在+2时区?
      • ... 时区偏移量每年不会更改两次 ;-)
      【解决方案4】:

      你应该改变你的格式试试这个

      <?php
      date_default_timezone_set('Asia/Kolkata'); // for india 
      // you  can set your timezone in above line
      // date_default_timezone_set('Asia/Karachi'); // for pakistan
      $date = date('d-m-Y g:i:s A')."\n"; 
      echo $date;
      $time = strtotime($date);
      echo "\n".$time."\n";
      echo "\n".date('d-m-Y g:i:s A', $time);
      ?>
      

      输出:

      26-07-2014 11:59:23 AM
      
      1406375963
      
      26-07-2014 11:59:23 AM
      

      Demo

      【讨论】:

      • 它给出了正确的日期和时间,但是当我将其转换为时间戳时,我落后了 5 个小时。
      • @TheRealHamza 正确设置您的时区。发布您的时区(国家/地区)
      • 我的时区设置正确。这就是为什么我得到正确的时间。
      • 在带有您的时区的新文件中尝试上述代码。你会得到正确的输出。
      猜你喜欢
      • 2011-03-29
      • 2012-05-04
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 2016-10-11
      • 2020-10-19
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多