php - 将 UTC0 更改为 UTC +1/+2
问题描述
我从我的 SQL 数据库中得到了一个时间戳:$DBdata = '2019-10-10 12:25:59'
,这个日期是UTC+0
。好吧,我住在丹麦,我们有以下 UTC。
中欧时间冬季(UTC+1)
中欧夏令时(UTC+2)
这些 UTC 每年从夏季到冬季不同日期的变化。
夏季时间
• 2019 - 3 月 30 日星期六至 3 月 31 日星期日之间的夜晚
• 2020 - 3 月 28 日星期六至 3 月 29 日星期日之间的夜晚
• 2021 年 - 3 月 27 日星期六和 3 月 28 日星期日之间的夜晚
• 2022 - 3 月 26 日星期六和 3 月 27 日星期日之间的夜晚
• 2023 - 3 月 25 日星期六和 3 月 26 日星期日之间的夜晚
冬季时间
• 2019 年 - 10 月 26 日星期六和 10 月 27 日星期日之间的夜晚
• 2020 - 10 月 24 日星期六和 10 月 25 日星期日之间的夜晚
• 2021 年 - 10 月 30 日星期六和 10 月 31 日星期日之间的夜晚
• 2022 - 10 月 29 日星期六至 10 月 30 日星期日之间的夜晚
• 2023 - 10 月 28 日星期六至 10 月 29 日星期日之间的夜晚
是否可以使用正确的 +1/+2 做出改变这些 UTC 的 if 语句?也许是这样的:
$Winter= gmdate('Y-m-d H:i:s', strtotime("WinterUTC"));
$Summer= gmdate('Y-m-d H:i:s', strtotime("SummerUTC"));
if (($$DBdata>= $Winter) && ($$DBdata<= $Summer)){
$gmt_dateWinter = gmdate('Y-m-d H:i:s', strtotime($date + '+ 2 hours') );
}else{
$gmt_dateSummer = gmdate('Y-m-d H:i:s', strtotime($date + '+ 1 hours') );
}
我不知道这是否是一个聪明的方法。如果有另一种更聪明的方法,请引导我走向另一个方向。
谢谢!
解决方案
您可以使用gmdate
anddate("I")
生成考虑时区的日期:
gmdate:格式化 GMT/UTC 日期/时间
$DBdata = '2019-10-10 12:25:59';
$timezone = +2; // (GMT +2:00) CEST (European Summer Time)
$GMdate = gmdate("Y-m-d H:i:s", strtotime($DBdata) + 3600*($timezone + date("I")));
echo $GMdate;
返回:
2019-10-10 22:25:59
从date
文档中:
I
(大写 i)日期是否为夏令时:1
如果是夏令时,0
否则。
推荐阅读
- microsoft-graph-toolkit - 同一页面中带有 Sharepoint Provider 的多个 Web 部件错误
- python - 在 Python 中替代 Sum 函数以获得更好的 LP 时间性能
- c# - 将本地数据库中的日期加载到列表中,错误
- javascript - v-for 不在 DIV 标签上循环,但适用于 TR 标签
- laravel - Laravel 排队作业创建通知
- java - 在 Eclipse 中停止 Minecraft 服务器
- unix - linux命令在将多个文件移动到其他目录之前压缩多个文件
- c# - 如何统一解决类之间的 CS7036 错误?
- firebase - 尝试在flutter中使用firebase验证登录时出错
- php - 发送更少的函数引用