php日期和夏令时混淆

2023-12-10

我遇到了一个问题,我 99% 确信它与昨天开始的夏令时有关。

以下脚本:

<?php
 $i=1383451200;
 echo $i, " ", date('Y-m-d I', @$i);
 echo "\n";
 $i = $i + 86400;
 echo $i, " ", date('Y-m-d I', @$i);
 echo "\n";
?>

(其中 86400 是一天的秒数)

给出以下输出

1383451200 2013-11-03 1 1383537600 2013-11-03 0

2 个时间戳,以一天中的秒数分隔,输入到 date() 中,给出相同的日期 2013-11-03

由于现在是 2013 年 11 月 3 日,而且我知道我们已切换到夏令时,并且 I 格式说明符指示一个时间戳处于 DST,而另一个时间戳则不是,我认为可以肯定地说我的系统配置有误。

问题是,如何解决?我已经做了:

pecl 安装 timezonedb

并将以下内容添加到 php.ini

扩展名=/usr/lib/php5/20100525/timezonedb.so

在我的系统上。

我的系统是 Macbook Pro 上的 Ubuntu 12.10,我使用的是 php 5

有什么建议如何解决这个问题吗?

这就是我正在尝试做的事情。我想打印一个月中每一天的日期。

$startTime = strtotime($start);
$endTime = strtotime($end);

其中 $start 和 $end 是 YYYY-MM-DD 形式的字符串(用户可以指定它们)

每月的具体天数计算如下:

for ($i = $startTime; $i <= $endTime; $i = $i + 86400) {
     $thisDate = date('Y-m-d', $i); 
}

我希望它打印出该月中从可能的用户指定范围的开始到结束的每一天的日期。

Mark


您不需要安装任何额外的扩展来操作时区,但您确实需要阅读 PHP 如何确定函数的默认时区,例如date(),总结为的手册页date_default_timezone_get()功能.

您的系统很可能是php.ini设置date.timezone选择某一地理时区此处列出,这将考虑该地点当地的夏令时规则。

如果你跑date_default_timezone_set('UTC');您应该看到您的代码按预期输出不同的日期,如图所示在这个例子中。如果您将所有时间戳视为 UTC,则实际上可以完全回避时区和夏令时问题,如果您实际上不知道应解释正在处理的数据的时区,这可能是合适的作为(例如,如果它来自未指定该信息的远程源)。

然而,从 PHP 5.2 开始,有一个强大的日期时间类它可以将时区信息封装在对象中,并包含诸如此类的方法向日期添加时间间隔.

请注意,DateTime 上的方法会更改对象,而不是返回新对象;从 PHP 5.5 开始,还有日期时间不可变反之亦然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php日期和夏令时混淆 的相关文章

  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐