2013-04-13 24 views
10

很多人會問如何去除時間並保留日期,但是換個角度呢?鑑於:去掉日期並保持時間

myDateTime <- "11/02/2014 14:22:45" 

我想看看:

myTime 
[1] "14:22:45" 

時區沒有必要的。

我已經嘗試過(從其他答案)

as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S") 

[1] 「2013年4月13日14時22分45秒NZST」

的目的是分析記錄了幾個事件只有一天的時間。

感謝

編輯:

原來有沒有純粹的「時間」的對象,所以每次也必須有個約會。

最後我用

as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01") 

,而不是人物的解決方案,因爲我需要做對結果的算術。這個解決方案與我的原始解決方案類似,不同之處在於可以一致地控制日期 - 在這種情況下「2000-01-01」,而我的嘗試只是在運行時使用當前日期。

+1

我最終偶然發現了chron,它有一個類「times」的對象。這使得添加更容易,例如18:00 + 12:00 = 1.25天。 – nacnudus

+0

你也可以在調用'format()'後使用'hms'包,即'hms :: as.hms(x)' – Von

回答

4

如果GMT時間內的時間對您的問題有用,您可以使用餘數運算符%%(剩餘運算符)以86400(一天中的秒數)取模。

stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02") 
as.numeric(as.POSIXct(stamps)) %% 86400 
## [1] 0 1 2 
+0

喜歡幻數['60 * 60 * 24'](https://www.google.com/search?q=60*60*24)。 – Jim

17

我認爲您正在尋找format函數。

(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S")) 
#[1] "2014-02-11 14:22:45" 
format(x, "%H:%M:%S") 
#[1] "14:22:45" 

這是character,而不是「時間」,但會喜歡的東西aggregate工作,如果這是你的意思是什麼「分析僅一天的時間記錄了數天的事件。」

+0

我正在面對一個strptime函數的問題。如果我在這樣的日期之前添加文本: strptime(「hello Tue,2010年3月23日14:36:38 -0400」,「%a,%d%b%Y%H:%M:%S% z「) #NA 任何想法問題出在哪裏 – Ankit

+0

@Ankit你必須在'format'參數中解釋它。試試這個:'strptime(「hello Tue,23 Mar 2010 14:36:38 -0400」,「hello%a,%d%b%Y%H:%M:%S%z」)' – GSee

+0

@GSee Great回答。這是我正在尋找的。 – Gandalf