2013-04-13 17 views
10

Birçok insan vaktin nasıl çizileceğini ve tarihin nasıl saklanacağını sorar, ancak diğer yoldan ne haber? Verilen:Tarihi soyun ve zamanı koruyun

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

ben görmek istiyorum: Gerekirse

myTime 
[1] "14:22:45" 

Saat dilimi değil.

Zaten amaç birkaç üzerinde kaydedilen olayları analiz etmektir

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

[1] "2013/04/13 14:22:45 TSİ" (diğer cevapları itibaren) denedim sadece günün saatine göre.

Teşekkür

Düzenleme:

Orada hiçbir saf "zaman" nesne, yani her zaman aynı zamanda bir tarih olması gerekir çıkıyor. Ben sonuçlarına aritmetik yapmak gerekir çünkü

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

ziyade karakter çözüm

kullandı. Bu çözüm orijinal tarihime benzer, ancak bu tarih sürekli olarak kontrol edilebilir - bu durumda "2000-01-01" denemem denemede geçerli tarihi kullanmıştım.

+1

Sonunda, "zamanlar" sınıfının bir nesnesine sahip olan kron üzerine tökezledim. Bu, eklemeyi daha kolay hale getirir, örn. 18:00 + 12:00 = 1.25 gün. – nacnudus

+0

ayrıca 'hms' paketini' format() ', i.e.' hms :: as.hms (x) ' – Von

cevap

4

Bir GMT günü içerisindeki saatiniz sorun için yararlıysa, bunu %%, geri kalan operatörü, geri kalan modulo 86400 (bir gün içinde saniyenin sayısı) alarak alabilirsiniz.

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

Sihirli numarayı seviyorum ['60 * 60 * 24'] (https://www.google.com/search?q=60*60*24). – Jim

17

Sanırım format işlevini arıyorsunuz.

(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 değil, "zaman" var, ama bu demek buysa aggregate gibi bir şeyle çalışacak Yani "sadece günün saatine göre birkaç gün içinde kaydedilen olayları analiz eder."

+0

aradıktan sonra strptime işlevinde bir sorunla karşılaştıktan sonra kullanabilirsiniz. Böyle bir tarihten önce bir metin eklerseniz: strptime ("merhaba Sıra, 23 Mar 2010 14:36:38 -0400", "% a,% d% b% Y% H:% M:% S% z ") #NA Sorunun nerede olduğu – Ankit

+0

@ Ankit 'biçimi' argümanında bunun hesabını yapmak zorundasınız. Bunu deneyin: strptime ("merhaba Sıra, 23 Mar 2010 14:36:38 -0400", "merhaba% a,% d% b% Y% H:% M:% S% z") ' – GSee

+0

@GSee Great Cevap. Aradığım şey bu. – Gandalf