很基本,只是不理解tz的论点是为了什么--如果不是这个.
dateIWantToConvert <- as.Date("2013-06-01") #the format of my starting object
as.POSIXlt(dateIWantToConvert, tz="America/Chicago")
[1] "2013-06-01 UTC"在data.frame中有很多这样的东西,所以效率很重要。
发布于 2016-01-15 19:44:34
一个更可靠的方法是使用strptime。这需要tz从OlsonNames()那里提出任何争论。说到可靠,我的意思是这应该是操作系统独立的。
(vec.Date <- strptime("2013-06-01", format = "%Y-%m-%d", tz = "America/Chicago"))
# "2013-06-01 CDT"
class(vec.Date)
# [1] "POSIXlt" "POSIXt" 对于您关于效率的问题,您确实应该使用strptime。请参阅Difference between as.POSIXct/as.POSIXlt and strptime for converting character vectors to POSIXct/POSIXlt
发布于 2016-01-15 19:36:09
没有as.Date()你也可以试试
> as.POSIXlt("2013-06-01", tz="America/Chicago")
#[1] "2013-06-01 CDT"发布于 2016-01-15 19:35:03
根据?timezones,无效时区通常被视为UTC而没有警告。很可能你的特定环境不知道如何解释“美国/芝加哥”。文档指出,这是不一致的。
试着用"CDT"代替“美国/芝加哥”。另外,在?timezones中也有关于如何向R提供要解释的时区格式列表的详细信息。
更新:as.Date返回一个“日期”对象,而不是字符串。as.POSIXlt将引用as.POSIXlt的话:“没有时间的日期被视为是在协调世界时的午夜”。因此,如果x是as.POSIXlt中的date对象,并且没有时间值,则忽略tz选项并将其替换为UTC。
因此,另一个选项是确保传递给date的as.POSIXlt对象已经指定了时间和时区。或者,在将对象传递给as.POSIXlt之前,将其转换为字符串,以便使用自己的tz选项。
https://stackoverflow.com/questions/34818368
复制相似问题