R:日期/时间“YYYY-MM-DDThh:mm:ss.sTZD”导入

时间:2016-09-16 15:11:44

标签: r datetime-format

如何在R中导入以下日期/时间格式示例?我愿意以这种格式保留所有信息。

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但没有成功,因为我找不到如何匹配sTZD,例如:

> strptime("2016-09-12T09:47:00.000+0200", format = '%Y-%m-%dT%H:%M:%S.000%z')
[1] "2016-09-12 09:47:00

2 个答案:

答案 0 :(得分:4)

你可以使用(非常新的)anytime包来执行此而不使用格式

// Using Jquery to assign the element to the variable name
$div_1 = $(div_1);
$div_2 = $(div_2);
$div_3 = $(div_3);

// set the CSS for each div
for (i = 1; i <= 3; i++) {
  $div_[i].css({'left': 100 +'px'});   
}

我可能会尝试扩展它以识别尾随的TZ偏移,因为底层的Boost date_time代码支持它。但是,到目前为止,我已经跟随R并将时间解释为本地时间,它也会(自动)找到本地时区。

anytime也会自动支持小数秒(但您需要确保显示它们):

R> anytime("2016-09-12T09:47:00.000+0200")
[1] "2016-09-12 09:47:00 CDT"
R> 

我倾向于使用微秒数据,所以我总是在所有方面都有六位数字,如图所示。

答案 1 :(得分:2)

要匹配秒的小数部分(来自示例中的docs?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。