关于时间的换算(PDT、UTC和CEST)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于时间的换算(PDT、UTC和CEST)相关的知识,希望对你有一定的参考价值。

12:01 AM PDT (07:01 UTC / 09:01 CEST)
是同一个时间吗?
我算的是括号里面的时间是同一时间:
07:01 UTC + 8小时 = 北京时间15:01
09:01 CEST + 6 = 北京时间15:01
12:01 AM PDT这个时差按夏令时换成北京时间是多少?
PDT就是夏令时对吧
PST冬令时。
12:01 AM PDT这个换成北京时间是多少?

1.GMT
格林威治标准时间GMT

2.UTC
UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间)
所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

3.PDT
PDT 是 Pacific Daylight Time 的缩写

美国夏季始于每年4月的第1个周日,
止于每年10月的最后一个周日。
夏令时比正常时间早一小时,
与PDT时间相对应的是PST , Pacific Standard Time 。 夏时制结束后就是PST

4.PST
PST
PST是太平洋标准时间(西八区),与北京时间(东八区)时差-16个小时,
也就是北京时间减去16就是PST时间。而PDT比PST早1个小时,就是说PDT与北京时间时差为-15小时
参考技术A PDT夏令时,按北京时间来说+15小时,12:01 AM PDT换成北京时间就是第2天凌晨03:01

R 中的时区问题,我想使用 UTC+0100,即使在夏天,尽管 CET 会自动切换到 CEST

【中文标题】R 中的时区问题,我想使用 UTC+0100,即使在夏天,尽管 CET 会自动切换到 CEST【英文标题】:timezone issue in R, i want to use UTC+0100, even in summer, although CET switches to CEST automatically 【发布时间】:2016-08-29 22:07:17 【问题描述】:

我在“CET”(中欧时间 = 冬季时间 = UTC+0100)和“CEST”(中欧夏令时间 = UTC+0200)中有一些带有 POSIXct 时间戳的数据。由于夏令时,我在绘图和计算方面遇到了一些麻烦,我希望所有时间戳都在 UTC+0100 时间。

这是我在切换回冬季时间的时间戳的示例:

> tdf$time_posix_vec[1:20]
[1] "2015-10-25 00:00:00 CEST" "2015-10-25 00:15:00 CEST" "2015-10-25 00:30:00 CEST" "2015-10-25 00:45:00 CEST" "2015-10-25 01:00:00 CEST"
 [6] "2015-10-25 01:15:00 CEST" "2015-10-25 01:30:00 CEST" "2015-10-25 01:45:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:15:00 CEST"
[11] "2015-10-25 02:30:00 CEST" "2015-10-25 02:45:00 CEST" "2015-10-25 02:00:00 CET"  "2015-10-25 02:15:00 CET"  "2015-10-25 02:30:00 CET" 
[16] "2015-10-25 02:45:00 CET"  "2015-10-25 03:00:00 CET"  "2015-10-25 03:15:00 CET"  "2015-10-25 03:30:00 CET"  "2015-10-25 03:45:00 CET" 

为了演示这个问题,我选择了一个示例时间戳:

> tx <- tdf$time_posix_vec[7]
> tx
[1] "2015-10-25 01:30:00 CEST"

我已经尝试过 lubridate 的 with_tz 函数,但是如果我将它与“CET”一起使用,会发生这种情况:

> with_tz(tx, tzone = "CET")
[1] "2015-10-25 01:30:00 CEST"

我假设,时区处理程序知道在我所在的位置,CET 在 3 月的最后一周和 10 月的最后一周之间变为 CEST。

为了解决这个问题,我可以使用阿尔及利亚的时区,因为阿尔及利亚使用没有夏令时的 CET(正如***告诉我的那样)。但是,这可能会在未来发生变化,并且

我想知道这个解决方案是否会因此而有点不安全?

> with_tz(tx, tzone = "Africa/Algiers")
[1] "2015-10-25 00:30:00 CET"

我认为最好的方法是使用“UTC+1”,但 with_tz 的行为与我的预期完全相反:

> with_tz(tx, tzone = "UTC+1")
[1] "2015-10-24 22:30:00 UTC"

要获得 00:30:00,我必须使用:

> with_tz(tx, tzone = "UTC-1")
[1] "2015-10-25 00:30:00 UTC"

但标签“UTC”也是错误的,因为在 UTC 中它会是

> with_tz(tx, tzone = "UTC")
[1] "2015-10-24 23:30:00 UTC"
为什么“UTC+1”将时间戳切换为 UTC-0100 而不是 UTC+0100? 是否有一个函数可以将时间戳强制设置为 UTC+0100,并为时间戳提供正确的时区标签,因此结果将是 "2015-10-25 00:30:00 UTC+1"

提前致谢,

你好,彼得

【问题讨论】:

您可以尝试转换为 POSIXlt,指定所需的时区,然后再转换回 POSIXct,仍然指定所需的时区。不是最好的,但可能是一种解决方法。我发现它在导入时设置了时区,使用 tz=,它可以防止以后出现很多问题。 嗨,戴夫,感谢您的回答。 【参考方案1】:

我想我找到了解决方案:现在我使用

t1 <- as.POSIXct("2016-07-12 17:43","Etc/GMT-1") 

例如。 GMT-1UTC+0100 一样让我感到困惑,他们似乎在 bsd 风格的时区转了标志。

【讨论】:

以上是关于关于时间的换算(PDT、UTC和CEST)的主要内容,如果未能解决你的问题,请参考以下文章

关于时间换算的JAVA题目

时区缩写 UTC, CST, GMT, CEST 以及转换

R 中的时区问题,我想使用 UTC+0100,即使在夏天,尽管 CET 会自动切换到 CEST

从 CET / CEST 到 UTC 的 TimeSeries 转换

将 PDT/PST 时区列转换为 UTC 时区

PDT 到 UTC 转换的日期时间对象格式