R: date/time "YYYY-MM-DDThh:mm:ss.sTZD" 导入
R: date/time "YYYY-MM-DDThh:mm:ss.sTZD" import
如何在 R 中导入以下 date/time 格式示例?我愿意以这种格式保存所有信息。
2016-09-12T09:47:00.000+0200
其中:
YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)
我试过 strptime
但没有成功,因为我找不到如何匹配 s
和 TZD
,示例:
> strptime("2016-09-12T09:47:00.000+0200", format = '%Y-%m-%dT%H:%M:%S.000%z')
[1] "2016-09-12 09:47:00
要匹配秒的小数部分(来自示例中的文档 ?strptime),请使用:
format = '%Y-%m-%dT%H:%M:%OS%z'
然后,查看 3 位数:
op <- options(digits.secs = 3)
strptime("2016-09-12T09:47:00.123+0200", format = '%Y-%m-%dT%H:%M:%OS%z')
##[1] "2016-09-12 03:47:00.123"
返回看不到 3 位数:
options(op)
我相信这确实解析了 UTC 的偏移量(即 +0200
)。我在美国东海岸,现在是 EDT (-0400)。因此,我晚了 6 小时 (+0200),因此 09:47:00.123+0200
变为 03:47:00.123
EDT。
您可以使用(相当新的)anytime 包执行此操作 没有格式:
R> anytime("2016-09-12T09:47:00.000+0200")
[1] "2016-09-12 09:47:00 CDT"
R>
我可能会尝试扩展它以识别尾随 TZ 偏移量,因为底层 Boost date_time 代码支持它。但是,到目前为止,我一直在关注 R 并将时间解释为 当地时间,它也(自动)找到当地时区。
anytime 也自动支持小数秒(但你需要确保显示它们):
R> anytime("2016-09-12T09:47:00.123456+0200")
[1] "2016-09-12 09:47:00.123456 CDT"
R>
我倾向于使用微秒数据,所以无论如何我倾向于使用六位数字,如此处所示。
如何在 R 中导入以下 date/time 格式示例?我愿意以这种格式保存所有信息。
2016-09-12T09:47:00.000+0200
其中:
YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)
我试过 strptime
但没有成功,因为我找不到如何匹配 s
和 TZD
,示例:
> strptime("2016-09-12T09:47:00.000+0200", format = '%Y-%m-%dT%H:%M:%S.000%z')
[1] "2016-09-12 09:47:00
要匹配秒的小数部分(来自示例中的文档 ?strptime),请使用:
format = '%Y-%m-%dT%H:%M:%OS%z'
然后,查看 3 位数:
op <- options(digits.secs = 3)
strptime("2016-09-12T09:47:00.123+0200", format = '%Y-%m-%dT%H:%M:%OS%z')
##[1] "2016-09-12 03:47:00.123"
返回看不到 3 位数:
options(op)
我相信这确实解析了 UTC 的偏移量(即 +0200
)。我在美国东海岸,现在是 EDT (-0400)。因此,我晚了 6 小时 (+0200),因此 09:47:00.123+0200
变为 03:47:00.123
EDT。
您可以使用(相当新的)anytime 包执行此操作 没有格式:
R> anytime("2016-09-12T09:47:00.000+0200")
[1] "2016-09-12 09:47:00 CDT"
R>
我可能会尝试扩展它以识别尾随 TZ 偏移量,因为底层 Boost date_time 代码支持它。但是,到目前为止,我一直在关注 R 并将时间解释为 当地时间,它也(自动)找到当地时区。
anytime 也自动支持小数秒(但你需要确保显示它们):
R> anytime("2016-09-12T09:47:00.123456+0200")
[1] "2016-09-12 09:47:00.123456 CDT"
R>
我倾向于使用微秒数据,所以无论如何我倾向于使用六位数字,如此处所示。