2016-11-29 25 views
-1

我導入了一個帶有日期字符串的文件,格式爲dd-mmm-yyyy hh:mm:ss AM/PM轉換文本dd-mmm-yyyy hh.mm.ssss到目前爲止的AM/PM

  1. 我很努力地發現,將這個迄今爲止時間格式,其中在部分時間爲24小時格式R代碼裏面,和
  2. 如何創建只有日期的新變量。

AS日期的一個示例見下文:
26-AUG-2016 08.48.43.65483000 AM

似乎秒也有小數。

[R版本3.3.1

+0

可能的重複http://stackoverflow.com/questions/9864659/convert-1 2小時至24小時的時間,http://stackoverflow.com/questions/29833538/convert-12-hour-character-time-to-24-hour, – akrun

回答

2

我們可以使用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" 
+0

是0S爲零或字符o – Manfred

+0

@ Manfred它是字符O而不是零。 –

+0

我有一個數據集調用roapr16。在它裏面有sys_date列。當我運行註釋roapr16 $ sys_date < - strptime(「roapr16 $ sys_date」,「%d-%b-%Y%H.%M.%OS%p」)時出現錯誤。系統字面上掛起 – Manfred

0

我會建議利用該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" 
+0

謝謝。該日期位於名爲SYS_DATE的數據集的列中。命令然後是roapr $ newdate < - as.Date(lubridate :: mdy_hms(roapr $ SYS_DATE)) – Manfred

+0

@Manfred是的,沒錯。 – Konrad

+0

運行此命令時,出現以下錯誤消息:所有格式均無法解析。沒有找到格式 – Manfred