Hem*_*mik 14 macos datetime r strptime r-faq
当我尝试按以下格式解析时间戳:"Thu Nov 8 15:41:45 2012"时,仅NA
返回.
我使用的是Mac OS X,R 2.15.2和Rstudio 0.97.237.我操作系统的语言是荷兰语:我认为这与它有关.
当我尝试时strptime
,NA
返回:
var <- "Thu Nov 8 15:41:45 2012"
strptime(var, "%a %b %d %H:%M:%S %Y")
# [1] NA
Run Code Online (Sandbox Code Playgroud)
两者都as.POSIXct
不起作用:
as.POSIXct(var, "%a %b %d %H:%M:%S %Y")
# [1] NA
Run Code Online (Sandbox Code Playgroud)
我也试过as.Date
上面的字符串,但没有%H:%M:%S
组件:
as.Date("Thu Nov 8 2012", "%a %b %d %Y")
# [1] NA
Run Code Online (Sandbox Code Playgroud)
我有什么想法可能做错了吗?
pla*_*pus 23
我认为这正如您所猜测的那样,strptime
因您的语言环境而无法解析您的日期时间字符串.您的字符串包含缩写的weekday(%a
)和缩写的月份名称(%b
).这些时间规范描述于?strptime
:
细节
%a
:此平台上当前区域设置中的缩写工作日名称
%b
:此平台上当前区域设置中的缩写月份名称."请注意,缩写名称是特定于平台的(尽管标准规定在
C
语言环境中它们必须是大写英文名称的前三个字母:""知道什么的缩写是必不可少的,如果你想使用
%a
,%b
或%h
作为输入格式的一部分:看到如何检查的例子"也可以看看
[...]
locales
查询或设置区域设置.
问题locales
是相关的也是as.POSIXct
,as.POSIXlt
和as.Date
.
来自?as.POSIXct
:
细节
如果
format
已指定,请记住某些格式规范是特定于语言环境的,您可能需要LC_TIME
通过适当的方式设置 类别Sys.setlocale
.这种情况通常会影响使用的%b
,%B
(月份名称)和%p
(AM/PM).
来自?as.Date
:
细节
在适当和可用的地方使用与字符串相关的特定于语言环境的转换.这会影响日期和月份的名称.
因此,如果平日月份名字符串中的不同于当前的区域,不同的strptime
,as.POSIXct
并且as.Date
无法正确解析字符串并NA
返回.
但是,您可以通过更改以下内容来解决此问题locales
:
# First save your current locale
loc <- Sys.getlocale("LC_TIME")
# Set correct locale for the strings to be parsed
# (in this particular case: English)
# so that weekdays (e.g "Thu") and abbreviated month (e.g "Nov") are recognized
Sys.setlocale("LC_TIME", "en_GB.UTF-8")
# or
Sys.setlocale("LC_TIME", "C")
#Then proceed as you intended
x <- "Thu Nov 8 15:41:45 2012"
strptime(x, "%a %b %d %H:%M:%S %Y")
# [1] "2012-11-08 15:41:45"
# Then set back to your old locale
Sys.setlocale("LC_TIME", loc)
Run Code Online (Sandbox Code Playgroud)
使用我的个人语言环境,我可以重现您的错误:
Sys.setlocale("LC_TIME", loc)
# [1] "fr_FR.UTF-8"
strptime(var,"%a %b %d %H:%M:%S %Y")
# [1] NA
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3768 次 |
最近记录: |