php - 为什么 php 时间戳会这样? 1985 年 11 月 3 日

标签 php timezone unix-timestamp mktime

我试图使用我的默认时区*(America/Sao_Paulo)* 制作我自己的 php mktime();。 它工作正常,但我注意到一些时间戳比应有的多了一个小时。 所以我追踪并找出脚本开始丢失的日期:1985 年 11 月 3 日 我进行了一些测试,出于某种奇怪的原因(这就是我想了解的原因),这一天只有 23 小时! 检查一下:

<?php

date_default_timezone_set('America/Sao_Paulo');

//shows 23
echo (mktime(0,0,0,11,03,1985)- mktime(0,0,0,11,02,1985))/3600; 

//any other date, shows 24
echo '<br/>'.(mktime(0,0,0,11,3,2000)-mktime(0,0,0,11,2,2000))/3600; 

?>

请注意,它不会出现在时区 UTC 中。 这可能是一个错误?

PS:抱歉英文错误。

最佳答案

您碰巧选择了代表 1985 年巴西夏令时开始的日期。参见 http://tldp.org/HOWTO/TimePrecision-HOWTO/tz.html .

因此,由于该特定日期的时间变化,这两天午夜之间的时差仅为 23 小时。

关于php - 为什么 php 时间戳会这样? 1985 年 11 月 3 日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480199/

相关文章:

ruby-on-rails - ActiveSupport::TimeZone 偏移量字符串列表

mysql - 抓取特定时间段内的行时最简单的时间戳类型?

java - PHP 和 Java Unix 时间戳之间的差异

php - 多供应商在线购物平台

php - cron作业php中的无限循环

php - mysqli_result 好像没有实现 Iterator 接口(interface)

php - Opcache 预加载并缺少 App_KernelProdContainer.preload.php

java - Gson 中的 DateFormat 模式 "yyyy-MM-dd' T'HH :mm:ss. SSS'Z'"

c# - 如何检查当前时区是否为 (UTC+9 :00) Osaka, Sapporo, Tokyo on other languages?

java - java中将秒转换为时间戳