【问题标题】:Convert Date to POSIXct将日期转换为 POSIXct
【发布时间】:2014-12-04 11:02:14
【问题描述】:

为什么转换为 POSIXct 后,下面的日期会变为“2014-07-07”?

Sys.setenv(TZ='America/Sao_Paulo')
d <- as.Date("2014-07-08", format="%Y-%m-%d")
d
[1] "2014-07-08"
as.POSIXct(d)
[1] "2014-07-07 21:00:00 BRT"

【问题讨论】:

  • 这可能与时区有关吗?如果您在调用as.POSIXct(d, tz = "...") 时提供特定时区怎么办?
  • @beginneR 我想知道发生这种情况的原因,我已经有了解决方法。
  • 可能是因为这个(来自?as.POSIXct):“没有时间的日期被视为UTC 午夜。”
  • 什么是fromat? :)

标签: r date posixct


【解决方案1】:

因为as.POSIXct.Date 不查找时区(如果您在... 中指定,则不会将其传递给.POSIXct)并且日期对象是“UTC”,所以您的POSIXct 与Date 对象的 UTC。

如果可以的话,最好直接在字符串上调用as.POSIXct

> as.POSIXct("2014-07-08", format="%Y-%m-%d")
[1] "2014-07-08 BRT"

【讨论】:

  • ...或先将日期转换为characteras.POSIXct(format(d))
  • 谢谢,约书亚。这很奇怪,有一个(...) 参数但它没有传递给.POSIXct,传递一个简单的时区参数可以解决这个.POSIXct(unclass(d) * 86400, tz="UTC")
  • @CarlosCinelli:我不确定是否可以解决,因为那是 UTC 午夜,而不是当地时间午夜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多