得到某个时间戳所对应的日期的0时在这边的数据统计中经常用到,如得到1409144737(2014/8/27 21:5:37)的0时1409068800(2014/8/27 0:0:0),可用的方法也比较多,在这里介绍常用的三种:
1.mktime函数方式
- $time =1409144737;
- var_dump(date('Y-m-d H:i:s',mktime(0,0,0,date('m',$time),date('d',$time),date('Y',$time))));
2.strttime函数方式
- var_dump(date('Y-m-d H:i:s',strtotime(date('Y-m-d 00:00:00',$time))));
因为上面两种方式调用多个函数得到结果,执行有点缓慢,效率不高,所以通过规律找到另一种方式,整除的方式。原理就是通过整除计算出今天已经过去的秒数,在计算过程中需要+8个小时,因为我们为东八区,比$time表示的实际秒数多8个小时。
3.整除方式
- var_dump(date('Y-m-d H:i:s',$time - ($time+8*60*60)%86400));
通过执行10W次调用,以上三种方式分别花费30s、50s、14s,第三种方式效率还是蛮OK的。
但是上线一段时候,测试提给我们一个bug,就是如果选择1975年的某时间戳会出现日期错误的bug,然后我们重现了这个bug
- $time = 321001200;//1980/3/4 15:0:0
- var_dump(date('Y-m-d H:i:s',$time - ($time+8*60*60)%86400));
输出结果竟然是:1980-03-03 23:00:00,其他两种方式皆是正确的1980-03-04 00:00:00
后来发现只在1980年5月以后的结果是正确的,而之前的都少了一个小时; 然后我看查看PHP的配置date.timezone = Asia/Chongqing,当换成PRC的时候,所有时间段都正确 ;至此bug其实解决了,让运维把线上600机子的配置进行修改,但是为啥呢,我们推测1980年的5月一定发生了啥事情吧,然后都按照GMT+8计算了
相关推荐
设置时区和同步时间 tzselect TZ=’Asia/Shanghai’; export TZ 修改时区 vi /etc/sysconfig/clock ZONE=Asia/Shanghai mv /etc/localtime /etc/localtimebak ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/...
OpenWRT 是一个基于 Linux 的嵌入式操作系统,广泛应用于路由器和其他嵌入式设备中。由于 OpenWRT 的广泛应用,因此设置正确的时间同步和时区变得非常重要。下面将详细介绍 OpenWRT 中的 NTP 时间同步和时区设置。 ...
`tzselect` 是一个交互式的命令行工具,用于设置系统时区。用户可以通过简单的菜单选择来完成时区的更改。 ```bash # tzselect ``` 运行此命令后,根据提示选择合适的地区、城市等信息,最后确认即可完成时区的...
这里,`tz`方法接受一个时区字符串,然后返回一个基于该时区的`moment`对象。 为了确保在全球范围内正确处理时区,还需要考虑夏令时(DST)。JavaScript的`Date`对象会自动处理大部分地区的夏令时,但并非所有时区...
本文将深入探讨“时区设置代码-一个完整的C++类”的相关知识点,包括`SetTimeZoneInformation`函数的使用、注册表操作以及如何在C++中实现这些功能。 `SetTimeZoneInformation`是Windows API提供的一个函数,用于...
"Time Zones.reg"文件通常是一个注册表导入文件,用于修复与时区相关的注册表项,从而解决此类问题。 Windows中的时区设置是通过“控制面板”中的“日期和时间”功能进行的,它允许用户根据所在的地理位置调整系统...
这段Dockerfile代码不仅设置了TZ环境变量,还创建了一个软链接,确保`/etc/localtime`指向正确的时区文件,并写入`/etc/timezone`以记录当前时区。 总结来说,处理Docker容器的时区问题,关键是理解和利用glibc的TZ...
在进行linux下修改时区的时候总是修改不了 修改成 Asia/Shanghai 但是 时区总是 +0000 却不是想要的+0800 按照网上的方法 A : tzselect:执行tzselect命令–>选择Asia–>选择China...ln -sf /usr/share/zoneinfo/Asia/
1. 手动修改时区:可以通过找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai,并将其替换当前的 /etc/localtime 文件。此外,还可以使用 scp 命令从标准时间服务器上复制时区文件。 2. 使用图形化命令:可以...
这两个函数都接受一个时区标识符作为参数,如`Asia/Shanghai`,`Asia/Chongqing`,`Asia/Urumqi`等。这些标识符遵循国际标准,如`Asia/Hong_Kong`代表香港,`Asia/Macao`代表澳门,`Asia/Taipei`代表台北,`Asia/...
在使用PHP进行Web开发的过程中,时区问题是一个经常遇到并且容易影响程序输出结果的问题。PHP中的时间函数默认采用的是格林威治标准时间(GMT)...在进行Web开发时,合理设置时区是确保时间数据准确性的一个重要步骤。
然而,这是一个高级操作,通常只在Windows环境下进行,且需谨慎处理,以免破坏系统。 提供的压缩包文件“OpenERP时区Bug解决注册表文件附说明”可能包含特定的注册表键值修改,这些修改可能有助于解决Windows服务器...
Android 时区设置 Android 时区设置是 Android 操作系统中的一项重要功能,允许用户根据...Android 时区设置是一个重要的功能,能够影响用户的日常生活和工作。用户需要正确地设置时区,以便更好地适应自己的需求。
在本案例中,我们有一个名为"时区补全.reg"的文件。这实际上是一个注册表脚本文件,用于导入新的时区信息到系统的注册表中。要使用这个文件,你需要按照以下步骤操作: 1. **安全提示**:在执行任何对注册表的操作...
关于timezone 大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi ,PRC(依次为重庆,上海,乌鲁木齐,中华人民共和国)港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,...
例如,如果你想将系统时区设置为"中国标准时间",你可以先创建一个`TimeZoneInformation`实例,填充相应字段,然后调用`SetTimeZoneInformation`: ```csharp var timeZone = TimeZoneInfo.FindSystemTimeZoneById...
在PHP和MySQL的应用中,时区的设置是一个关键的细节,尤其对于处理日期和时间的准确性至关重要。在本文中,我们将深入探讨如何在PHP和MySQL中进行时区的配置和调整,以及解决与之相关的一些常见问题。 首先,让我们...
如果时区设置不正确,可能会导致系统时间出错,影响系统的稳定性和可靠性。因此,在设置时区时,需要格外小心和细致。 常见的问题 * Q: 如何查看系统当前的时区? A: 使用`timedatectl`命令可以查看系统当前的时区...