2009-07-14 5 views
16

시간 정보를 UTC (GMT) 이외의 다른 정보에 저장하는 데 좋은 이유가 있는지 궁금합니다. 나는 이것이 모든 소프트웨어 엔지니어링에 대한 확고한 원칙이라고 믿는다. 현지 시간으로의 변환은 디스플레이 목적으로 UI 레이어에서 일어나는 변환 일뿐입니다. 알고리즘을 올바르게 구현하기 위해 번역이 필요한 경우도있었습니다 (자정 변경 등).UTC가 아닌 시간을 저장할 좋은 이유가 있습니까?

+0

http://tycho.usno.navy.mil/leapsec.html은 특정 실제 이벤트를 관리하는 서버를 설계한다고 가정 해 봅시다. "로스 엔젤레스에서 매주 화요일 오후 2 시부 터 오후 3 시까 지"이벤트가 열린다 고 가정 해보십시오. UTC로 어떻게 저장합니까? –

답변

11

응용 프로그램에 따라 다릅니다. 나는 전리층의 우주 물리학 모델 & 자기권을 연구 중이다. 우리는 자기 현지 시각으로 작업하여 & 번을 Modified Julian Days으로 저장합니다.

0

현지 시간 만 사용된다고 확신하는 경우.

+5

24 시간 활동이있는 경우에도 UTC를 사용하는 것이 좋습니다. 그렇지 않으면 일광 절약 크로스 오버를 처리하는 것이 엄청난 PITA가됩니다. 나는 쓴 경험에서 말한다. –

+0

또는 시간대를 변경할 수 있는지 여부. 현지 시간은 업데이트되어야합니다. –

6

경보 & 예약 된 작업은 일광 절약 시간이나 시간대 변경에 영향을받지 않도록 현지 시간으로 저장되는 경우가 있습니다.

+0

현지 시간으로 저장/저장 되었습니까? 아니면 UTC를 가져 와서 convertToLocalTime() 멤버 함수를 사용하는 것이 더 좋을까요? – Pete

+3

@ Pete : 내 알람 시계 생각하기 : 알람은 현지 시간으로 오전 7 시로 설정됩니다. 시계가 겨울에 되돌아 갈 때, 나는 6am에 깨우 게되고 싶지 않다. 내가 서쪽으로 출장을 갔을 때, 나는 7am 집으로 돌아 왔기 때문에 한밤중에 깨어나고 싶지 않습니다. – dave4420

+2

@Dave 그래, TIME_ZONE + = n을 변경하면 convertToLocalTime (currentUtc, TIME_ZONE, isDaylightSavingsTime)은 로컬 시간 (UTC로 내부적으로 저장되어 있음에도 불구하고)을 반환합니다. – Pete

2

? 나는 어떤 고립 된 경우에 좋은 이유가 있다고 확신한다. 일반적으로 UTC를 저장하는 것은 현지 시간보다 훨씬 낫습니다. 따라서 특별한 고려 사항이없는 한 UTC를 기본 위치로 간주합니다.

21

일반적으로 UTC를 사용하는 것이 좋습니다. 때때로 현지 시간이 필요할 수 있습니다. 그렇다면 차라리 UTC + 시간대 정보와 함께 갈 것입니다.

일반적으로 반복적 인 이벤트의 경우 매우 까다로울 수 있으므로 사용 사례를 매우 신중하게 분석해야합니다.

매주 화요일 오전 9:00에 되풀이 모임을 상상해보십시오. DST가 변경되면 회의는 새 오전 9시에 계속 발생해야합니다.

하지만 프랑스에있는 어떤 사람들을 회의에 추가하지 않아도됩니다. 그들을 위해 회의는 오후 6시에 있습니다. 그리고 그들은 다른 규칙에 의해 DST를 변경합니다.

DST를 변경하면 잠시 동안 (프랑스가 DST를 변경하기 전까지) 누군가가 "꺼짐"상태 여야합니다. 회의가 오후 10시에 오후 6시에 유지되거나 9시에 오후 5시에 이동하십시오. 다른 방법은 없습니다. 컴퓨터는 아무 관련이 없습니다.

"고정"해야 할 사람을 어떻게 결정합니까? 회원 수가 가장 많은 그룹입니까? (미국 1 명, 프랑스 20 명?) 아니면 그 사람의 중요성에 관한 것입니까? (미국에있는 1 명의 남자가 CEO 인 경우 어떻게합니까?)

어떻게 정보를 저장하나요? 가장 좋은 해결책은 UTC + 하나의 "마스터 시간대"를 사용하는 것입니다. "마스터 시간대"에있는 사용자가 이기기 (고정 된 상태로 유지).

상황이 매우 까다로울 수는 있지만 일반적으로 UTC가 소개하는 것보다 더 많은 probelems를 해결할 수 있습니다.

+2

+1 훌륭한 예제 케이스 – Triptych

+1

내가 잘못하면 나를 바로 잡으십시오. 그러나 UTC + 마스터 시간대를 저장해도 DST 변경 문제는 해결되지 않습니다. 실제 예 : 1 - datetime을 "NY에서 9am 이후로 1 년"으로 저장해야합니다. 이것을 UTC로 계산하고 NY 시간대와 함께 DB에 저장하십시오. 2 - 1 년이 지나기 전에 뉴욕은 DST를 변경합니다. 9am 뉴욕 타임지의 원래 날짜는 우리가 저장 한 날짜와 다릅니다. – fjsj

2

임베디드 시스템에서 일종의 "틱 과거 에포크"형식으로 소스에서 시간을받을 수 있습니다.

시간이 비교적 자주 업데이트되고 비교적 드물게 표시되는 경우 제공된 시간과 동일한 방식으로 시간을 저장하고 필요할 때만 표시되도록 변환 할 수 있습니다.

그러나 일반적으로 UTC는 다른 고려 사항이없는 한 진행 방법입니다.

4

UTC은 정확도와 정확도가 TAI이지만, 윤년 초를 불규칙한 간격으로 추가하여 평균 태양 광 시간 (UT1)을 가깝게 추적 할 수있는 시간 보존 표준입니다.

작업중인 시스템이 윤초를 처리 할 수없는 경우 Bureau International des Poids et Mesures은 UTC 대신 TAI를 사용하도록 권장합니다.

은 참조 :

+1

이제는 좀 더 upvotes가 필요합니다, 왜 사람들은 몇 년에 한 번 거꾸로 갈 때 posix 시간이 선형이라고 생각하지 않습니다. – Pacerier

+0

Pacerier : 거꾸로 간다? 이런. 나는 그 사실을 몰랐다. 나는 지구의 회전이 느려졌 기 때문에 앞으로 도약했다고 생각했다. –

+2

그것은 실제로 역사상 처음으로 앞으로 도약 한 적이 없었지만 (앞으로 * 가능할 *), 매 1.5 년마다 평균적으로 뒤로 이동했다. 30 초마다 스톱워치가 있으면 시간은 이렇게됩니다 :'58.0 58.5 59.0 59.5 00.0 00.5 00.0 00.5 01.0' http://en.wikipedia.org/wiki/Unix_time – Pacerier

관련 문제