格式化非常规日期

时间:2017-08-01 14:32:04

标签: r date formatting

我在格式化R中的日期列表时遇到了问题.R中的常规格式化方法,例如as.Date或as.POSIXct似乎无法正常工作。

我的日期格式为:1012015

使用

as.POSIXct(as.character(data$Start_Date), format = "%m%d%Y")

不会给我一个错误,但我的日期会返回

"0015-10-12"因为月份不是两位数。

有没有办法将其更改为正确的日期格式?F

2 个答案:

答案 0 :(得分:3)

lubridate包可以帮助解决这个问题:

lubridate::mdy(1012015)
[1] "2015-01-01"

格式看起来很模糊,但OP提供了两个提示:

  • 他在自己的尝试中使用format = "%m%d%Y"
  • 他认为问题是因为月份不是两位数

答案 1 :(得分:0)

这仅使用基数R. %08d指定要格式化为8个字符的数字,在这种情况下使用0填充"01012015"

as.POSIXct(sprintf("%08d", 1012015), format = "%m%d%Y")
## [1] "2015-01-01 EST"

请注意,如果您没有任何小时/分钟/秒,那么使用"Date"类的错误就会更少,因此消除了细微时区错误的可能性。

as.Date(sprintf("%08d", 1012015), format = "%m%d%Y")
## [1] "2015-01-01"