2016-07-24 3 views
0

3 시간마다 특정 날짜에 시작하고 끝나는 일련의 시간 소인을 만들려고합니다. 노력하는 방식이 잘되었지만 모두 똑같은 문제가 있습니다. 시퀀스의 중간에는 태평양 표준시와 태평양 표준시 사이의 시간 변환이 있는데 이유가 확실하지 않습니다. 상기 볼 때를 제외하고3 시간마다 시간 소인의 시퀀스

TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "America/Los_Angeles") 
TIME2 <- as.POSIXct("2016-02-29 23:00:00" , tz = "America/Los_Angeles") 
temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 

내가 temp의 출력을 보면, 처음에는 좋아 보인다 : 다음은 사전에이 사이트 (Question1Question2)에 묻는 질문에 유사한 내가 시도 코드가 있습니다 출력 라인에 [1]

temp[720:745] 

[1] "2000-03-30 23:00:00 PST" "2000-03-31 02:00:00 PST" "2000-03-31 05:00:00 PST" "2000-03-31 08:00:00 PST" "2000-03-31 11:00:00 PST" "2000-03-31 14:00:00 PST" 
[7] "2000-03-31 17:00:00 PST" "2000-03-31 20:00:00 PST" "2000-03-31 23:00:00 PST" "2000-04-01 02:00:00 PST" "2000-04-01 05:00:00 PST" "2000-04-01 08:00:00 PST" 
[13] "2000-04-01 11:00:00 PST" "2000-04-01 14:00:00 PST" "2000-04-01 17:00:00 PST" "2000-04-01 20:00:00 PST" "2000-04-01 23:00:00 PST" "2000-04-02 03:00:00 PDT" 
[19] "2000-04-02 06:00:00 PDT" "2000-04-02 09:00:00 PDT" "2000-04-02 12:00:00 PDT" "2000-04-02 15:00:00 PDT" "2000-04-02 18:00:00 PDT" "2000-04-02 21:00:00 PDT" 
[25] "2000-04-03 00:00:00 PDT" "2000-04-03 03:00:00 PDT" 

공지 아래 지정된 간격이 그 것이다 "2000년 3월 30일 태평양 표준시 23시 00분 0초"를 "2000년 3월 31일 태평양 표준시 02시 00분 0초"로 간다 3 시간이지만, [13]의 경우 "2000-04-01 23:00:00 PST"에서 "2000-04-02 03:00:00 PDT"로 변경됩니다. 시간대가 변경된 것을 확인하십시오. 이것은 시퀀스 전체에서 발생합니다. 그러한 결과를 피하는 방법은? 필자는 필자가 원하지 않는 일광 절약 시간제를 자동으로 변환하고 있다고 생각합니다. LST (현지 표준 시간)로 유지할 수 있다면 좋을 것입니다.

업데이트 : 최근에 this suggestion을 발견했습니다. 여기서 우리는 일광 절약 시간을 없애기 위해 "UTC"표준 시간대로 변환합니다. 작동하여 모든 시간 스탬프를 UTC로 표시합니다. 그러나 LST로 유지하는 방법이 있는지 알아 보는 것이 좋습니다.

+1

[우리가 R에 일광 절약 시간으로 전환 할 때 일에 대한 데이터를 취급]의 사용 가능한 복제 (http://stackoverflow.com/questions/13865172/handling-data-on-the- day-we-switch-day-day-savings-time-and-back-in-r) – dayne

+1

LST = 현지 표준 시간? –

+0

또한'lubridate' 패키지의'dst'와'dhours' 함수를 살펴 봅니다. 그것들은 여기서 관련이 있습니다. – shayaa

답변

4

태평양 표준시()를 표준 시간대로 사용하고 태평양 일광 절약 시간 (PDT)으로 전환하지 않으려면 왜 지정하지 않는가? "America/Los Angeles"

TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "PST") 
TIME2 <- as.POSIXct("2016-02-29 23:00:00" , tz = "PST") 
temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 
temp[720:745] 
[1] "2000-03-30 23:00:00 PST" "2000-03-31 02:00:00 PST" 
[3] "2000-03-31 05:00:00 PST" "2000-03-31 08:00:00 PST" 
[5] "2000-03-31 11:00:00 PST" "2000-03-31 14:00:00 PST" 
[7] "2000-03-31 17:00:00 PST" "2000-03-31 20:00:00 PST" 
[9] "2000-03-31 23:00:00 PST" "2000-04-01 02:00:00 PST" 
[11] "2000-04-01 05:00:00 PST" "2000-04-01 08:00:00 PST" 
[13] "2000-04-01 11:00:00 PST" "2000-04-01 14:00:00 PST" 
[15] "2000-04-01 17:00:00 PST" "2000-04-01 20:00:00 PST" 
[17] "2000-04-01 23:00:00 PST" "2000-04-02 02:00:00 PST" 
[19] "2000-04-02 05:00:00 PST" "2000-04-02 08:00:00 PST" 
[21] "2000-04-02 11:00:00 PST" "2000-04-02 14:00:00 PST" 
[23] "2000-04-02 17:00:00 PST" "2000-04-02 20:00:00 PST" 
[25] "2000-04-02 23:00:00 PST" "2000-04-03 02:00:00 PST" 

UTC를 사용 권장 referenced question는, 그 세 글자 시간대 코멘트 ... 정의 (DST 스위치를 포함하는) 특정 시간 로스 앤젤레스 유효 시간대별로 수단 코드가 모호 할 수 있습니다 (예 : 오스트레일리아와 북미 모두 동부 표준시를가집니다. 단, this reference은 호주 표준시가 AEST로 코딩되었음을 나타냅니다). 이런 식으로 시간대 코딩 운영 체제 관련되는 좋은 기회 ... 출력 라인 [1]

+1

''PST ''는 유효한 시간대가 아니므로 "태평양 표준시"를 의미하지는 않습니다. 태평양 표준시의 약자이지만 다른 시간대의 약어 일 수도 있습니다. –

+0

확인; 이 대답을 삭제 하시겠습니까? (FWIW,'tz = PST'는'tz = GMT-8'과 같은 대답을하는 것처럼 보이기 때문에 아마도 OS 시간/날짜 라이브러리가 정확하게 추측 한 것입니까? –

+0

'tz = "PST" '대답은'tz = "GMT-8"'과 같은 답을 준다. 인쇄 된 응답의 * 형식 *은 동일하지만 (축약 된 시간대는 제외) 기본 값은 그렇지 않다. (예를 들어'unclass ').'tz = "PST"'일 때 기본 값은 모두 UTC이다. (예 :'.POSIXct (unclass (temp), tz = "UTC")'). –

1

공지 사항이 있기 때문에 당신은 확실히 그것을에서 이동, 신중하게 결과를 확인하기 위해주의해야 "2000-03-30 23:00:00 PST"부터 "2000-03-31 02:00:00 PST"까지는 3 시간이지만 [13] 줄에는 "2000-04-01 23:00:00 PST "를"2000-04-02 03:00:00 PDT "로 변경하십시오. "2000년 4월 1일 태평양 표준시 23시 00분 0초는"에 "2000년 4월 2일 태평양 서머 타임 03시 00분 0초는" 3시간 것을

참고.

당신이 일광 절약 시간을 준수하지만 현재 현지 시간으로 GMT 오프셋 동일하지 않는 시간대를 원한다면, 당신은 시간대 이름의 제안을 시도 할 수 ?timezone 섹션

대부분의 플랫폼은 'GMT + n'및 'GMT-n'형식의 시간대를 지원하며 UTC와 고정 오프셋 (즉, DST 없음)을 가정합니다.

R> TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "GMT-8") 
R> TIME2 <- as.POSIXct("2016-02-29 23:00:00", tz = "GMT-8") 
R> temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 
R> temp[720:745] 
[1] "2000-03-30 23:00:00 GMT" "2000-03-31 02:00:00 GMT" 
[3] "2000-03-31 05:00:00 GMT" "2000-03-31 08:00:00 GMT" 
[5] "2000-03-31 11:00:00 GMT" "2000-03-31 14:00:00 GMT" 
[7] "2000-03-31 17:00:00 GMT" "2000-03-31 20:00:00 GMT" 
[9] "2000-03-31 23:00:00 GMT" "2000-04-01 02:00:00 GMT" 
[11] "2000-04-01 05:00:00 GMT" "2000-04-01 08:00:00 GMT" 
[13] "2000-04-01 11:00:00 GMT" "2000-04-01 14:00:00 GMT" 
[15] "2000-04-01 17:00:00 GMT" "2000-04-01 20:00:00 GMT" 
[17] "2000-04-01 23:00:00 GMT" "2000-04-02 02:00:00 GMT" 
[19] "2000-04-02 05:00:00 GMT" "2000-04-02 08:00:00 GMT" 
[21] "2000-04-02 11:00:00 GMT" "2000-04-02 14:00:00 GMT" 
[23] "2000-04-02 17:00:00 GMT" "2000-04-02 20:00:00 GMT" 
[25] "2000-04-02 23:00:00 GMT" "2000-04-03 02:00:00 GMT" 
R> attr(temp, "tzone") 
[1] "GMT-8" 
+0

출력을 복제 할 수 있었지만 GMT-8이 알 수없는 표준 시간대라는 경고 메시지가 표시되었지만 좋은 것일 수 있습니다. 대안으로도 좋습니다. 제안 해 주셔서 감사합니다. – lurodrig

관련 문제