首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >as.POSIXlt忽略tz参数

as.POSIXlt忽略tz参数
EN

Stack Overflow用户
提问于 2016-01-15 19:26:51
回答 3查看 1.3K关注 0票数 4

很基本,只是不理解tz的论点是为了什么--如果不是这个.

代码语言:javascript
复制
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中有很多这样的东西,所以效率很重要。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-15 19:44:34

一个更可靠的方法是使用strptime。这需要tzOlsonNames()那里提出任何争论。说到可靠,我的意思是这应该是操作系统独立的。

代码语言:javascript
复制
(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

票数 3
EN

Stack Overflow用户

发布于 2016-01-15 19:36:09

没有as.Date()你也可以试试

代码语言:javascript
复制
> as.POSIXlt("2013-06-01", tz="America/Chicago")
#[1] "2013-06-01 CDT"
票数 3
EN

Stack Overflow用户

发布于 2016-01-15 19:35:03

根据?timezones,无效时区通常被视为UTC而没有警告。很可能你的特定环境不知道如何解释“美国/芝加哥”。文档指出,这是不一致的。

试着用"CDT"代替“美国/芝加哥”。另外,在?timezones中也有关于如何向R提供要解释的时区格式列表的详细信息。

更新:as.Date返回一个“日期”对象,而不是字符串。as.POSIXlt将引用as.POSIXlt的话:“没有时间的日期被视为是在协调世界时的午夜”。因此,如果xas.POSIXlt中的date对象,并且没有时间值,则忽略tz选项并将其替换为UTC

因此,另一个选项是确保传递给dateas.POSIXlt对象已经指定了时间和时区。或者,在将对象传递给as.POSIXlt之前,将其转换为字符串,以便使用自己的tz选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34818368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档