Tho*_*rst 3 timezone r posixct
我的一天开始于2016-03-02 00:00:00.没有2016-03-02 00:00:01.
我如何POSIXct在当地时间开始一天的开始?
我的困惑可能来自于R将此视为2016-03-01的结束日期?鉴于R使用ISO 8601?
例如,如果我尝试使用Sys.Date()找到当天的开头:
as.POSIXct(Sys.Date(), tz = "CET")
"2016-03-01 01:00:00 CET"
Run Code Online (Sandbox Code Playgroud)
这是不正确的 - 但还有其他方法吗?
我知道我可以用简单的方式破解我的出路
as.POSIXct(paste(Sys.Date(), "00:00:00", sep = " "), tz = "CET")
Run Code Online (Sandbox Code Playgroud)
但是必须有一个更正确的方法来做到这一点?基础R优先.
这是一个单一命令---但你想要as.POSIXlt():
R> as.POSIXlt(Sys.Date())
[1] "2016-03-02 UTC"
R> format(as.POSIXlt(Sys.Date()), "%Y-%m-%d %H:%M:%S")
[1] "2016-03-02 00:00:00"
R>
Run Code Online (Sandbox Code Playgroud)
只有当转换POSIXct发生时,UTC的时区偏移(对我来说是六个小时)才会进入:
R> as.POSIXct(Sys.Date())
[1] "2016-03-01 18:00:00 CST"
R>
Run Code Online (Sandbox Code Playgroud)
不用说,通过包装你得到所需的类型和价值:
R> as.POSIXct(as.POSIXlt(Sys.Date()))
[1] "2016-03-02 UTC"
R>
Run Code Online (Sandbox Code Playgroud)
再次提交不需要润滑剂或其他非Base R包装.
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |