转换文本dd-mmm-yyyy hh.mm.ssss AM / PM到目前为止

时间:2016-11-29 06:09:47

标签: r date datetime

我导入的文件的日期字符串格式为dd-mmm-yyyy hh:mm:ss AM/PM

  1. 我很难找到将其转换为日期时间格式的R代码,其中时间部分为24小时格式,并且
  2. 如何仅使用日期创建新变量。
  3. 作为其中一个日期的例子见下文:
    26-AUG-2016 08.48.43.65483000 AM

    似乎秒也有小数。

    R版本3.3.1

2 个答案:

答案 0 :(得分:3)

我们可以使用格式正确的strptime

strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %H.%M.%OS %p")
#[1] "2016-08-26 08:48:43 IST"

如果您只想要日期,我们可以将其包装在format

format(strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %H.%M.%OS %p"), 
                                                                    "%d-%m-%Y")
#[1] "26-08-2016"

并且只获得时间,

format(strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %I.%M.%OS %p"), 
                                                                     "%H:%M:%S")
#[1] "08:48:43"

format(strptime("26-AUG-2016 08.48.43.65483000 PM", "%d-%b-%Y %I.%M.%OS %p"), 
                                                                     "%H:%M:%S")
#[1] "20:48:43"

答案 1 :(得分:1)

我建议使用lubridate包:

lubridate::mdy_hms("01/22/2013 11:00:00 PM")

这会产生:

[1] "2013-01-22 23:00:00 UTC"

返回的对象属于"POSIXct"/"POSIXt"类,因此如果您希望获取日期或提取时间,您应该可以方便地操作它:

>> as.Date(lubridate::mdy_hms("01/22/2013 11:00:00 PM"))
[1] "2013-01-22"