2016-12-19 12 views
1

01:00으로 정의 된이 시간 오브젝트에서 시간 (3600 초)을 뺍니다. 그렇게하면 시간 구성 요소가 사라지고 날짜 만 남습니다. 시간 구성 요소를 보존해야합니다. 어떻게해야합니까? 이것은 내 빼기 결과가 00-00 일 때만 발생합니다.POSIXlt 오브젝트에서 뺄 때 시간을 절약합니다.

test <- strptime("2016-09-02_01-00", format = "%Y-%m-%d_%H-%M", tz = "UTC") 
test 
[1] "2016-09-02 01:00:00 UTC" 
test-3600 
[1] "2016-09-02 UTC" 
+2

이 시간 구성 요소가 여전히 존재 ... 형식 문자열을 지정하여이를 대체 할 수 있습니다 , 자정을 가진 벡터의 모든 날짜를 인쇄하지 않습니다. 표시 할 형식을 시행하려면'strftime()'또는'format()'또는 무엇인가를 사용하십시오. – MrFlick

+1

그 내용은'? strptime'에도 기록되어 있습니다. * 어떤 요소에 자정이 아닌 시간 요소가있는 경우 형식 메서드의 기본값은 "% Y- % m- % d % H : % M : % S" % Y- % m- % d "그렇지 않으면 *" –

답변

3

이것은 내용과 표현의 차이점입니다. 3600 을 빼면

fmt <- "%Y-%m-%d_%H-%M" 
test <- strptime("2016-09-02_01-00", 
    format = fmt, tz = "UTC") 
str(test) 
## POSIXlt[1:1], format: "2016-09-02 01:00:00" 

변화 (POSIXlt에서 POSIXct에) 구조 ...

str(test-3600) 
## POSIXct[1:1], format: "2016-09-02" 

을한다 ...하지만 형식의 변화는 R가 도움이 인쇄려고 노력 단지 인해입니다 가능한 가장 간단한 표현. 시간 정보는 실제로 사라지지 않았습니다. ?strptime 가입일 (감사 @DavidArenburg)

포맷 방법의 기본은 "% Y- % M- % D % H %의 M %의 S"요소가 자정 아닌 시간 성분이 있는지 그리고 "% Y- % M- % D"그렇지 않으면

주석 @MrFlick 상태로

, 당신은

fmt2 <- "%Y-%m-%d %H:%M:%S" 
format(test-3600,fmt2) 
## [1] "2016-09-02 00:00:00" 
+0

우수. 설명해 주셔서 감사합니다. 그 대답. – SilvanD