본문 바로가기
다양한 TIP

시간 함수를 사용할 때 섬머타임 관련 설정(feat. tm_isdst)

by 유기농프로그래밍 2021. 9. 14.
반응형

시간함수를 사용하면 보통 struct tm 를 이용합니다.

아래는 cplusplus에서 가져온 표입니다.

출처: cplusplus

이렇게 구조체 멤버변수들을 볼 수 있는데요.

출처: cplusplus

이 시간 구조체를 이용하여 mktime(로컬시간 변환 함수) 을 호출하면 시간이 나오죠.

이 때 중요한 것이 tm 구조체 안의 변수인 tm_isdst 입니다.

 

tm_isdst 필드는 현재의 Time Zone 이 DaylightSaving 사용하는지 여부를 알려줍니다.

이 값이 만약 1이상이면 사용함을 의미하고,

이 값이 0이면 사용안함을 의미하고,

-1이면 시스템 설정에 의해 작동됨을 의미하게 됩니다.

 

개인적 경험인데, 개발 도중 tm_isdst를 0으로 두었음에도 섬머타임 존에 걸려있는 지역에서

섬머타임이 적용되어 출력되는 버그아닌 버그가 발견되어 -1로 바꿨습니다.

그 이후로 문제 없이 돌아감을 확인했던 경험이 있습니다.

 

따라서 섬머타임과 상관없이 진행할 수 있는 곳은 항상 -1로 값을 세팅해두고 코딩하는걸

추천드립니다.

 

 

 

반응형

댓글