【发布时间】:2018-01-02 01:20:47
【问题描述】:
我想弄清楚如何在 R 中格式化Sys.time() 的输出。
例如:
t <- Sys.time()
print(t)
# [1] "2017-07-26 09:41:29 CEST"
这是正确的。
我想用t 制作一个由日期、小时和分钟以及时区组成的字符串。
我可以使用
format(t, format = "%F %R %Z")
# [1] "2017-07-26 09:41 CEST"
这是我所期望的。
但是,如果我明确设置时区,我将很难理解输出。例如:
format(t, format = "%F %R %Z", tz = "Europe/Stockholm")
# [1] "2017-07-26 09:41 CEST"
产生了我期望的结果,但是:
format(t, format = "%F %R %Z", tz = "CEST")
# [1] "2017-07-26 07:41 CEST"
我认为这是错误的,我希望输出是 "2017-07-26 09:41 CEST" 或 "2017-07-26 09:41 Europe/Stockholm"
还有
format(t, format = "%F %R %Z", tz = "UTC+02:00")
# [1] "2017-07-26 05:41 UTC"
我觉得这更奇怪,因为我本来希望输出是 "2017-07-26 10:41 UTC+02:00"
在回答中我想知道两件事:
- 为什么我的示例给出了它们给出的输出?
- 有没有办法让时区总是写成
"2017-07-26 10:41 UTC+02:00"或"2017-07-26 10:41 Europe/Stockholm"?
【问题讨论】:
-
您假设您可以对时区参数使用“随机”输入。你不能。坚持使用“命名”时区(例如“欧洲/斯德哥尔摩”)。未识别/未知的参数会导致(静默)UTC 设置。
-
但是为什么
format(Sys.time(), format = "%F %R %Z", tz = "I have no clue")返回"2017-07-26 15:50 "而不是"2017-07-26 15:50 CEST"? -
谢谢,但我仍然对有时在输出中包含时区和有时将其排除在外的不一致行为感到有些困惑。例如,
format(Sys.time(), format = "%F %R %Z", tz = "aaaaaa b")返回"2017-07-26 15:55 aaaaaa",尽管它与“我不知道”一样垃圾。并不是说我打算搞乱时区。 -
奇怪,这正是我在控制台中输入的内容。好吧,我不会在这个问题的非问题版本上浪费你的时间了。 ;)
标签: r date formatting timezone format