[C++] _tzset() 함수를 사용한 Os 시간 관련 내용
글쓴이: gyxor / 작성시간: 목, 2005/07/14 - 5:32오후
#include<iostream> #include<ctime> using namespace std; int main() { if( _putenv( "TZ=EST5EDT" ) == -1 ) { printf( "Unable to set TZ\n" ); exit( 1 ); } else { _tzset(); printf( "_daylight = %d\n", _daylight ); printf( "_timezone = %ld\n", _timezone ); printf( "_tzname[0] = %s\n", _tzname[0] ); printf( "_tzname[1] = %s\n", _tzname[1] ); } return 0; }
위 함수를 실행시키면 결과가 아래와 같이 나옵니다.
_daylight = 69 _timezone = 18000 _tzname[0] = EST _tzname[1] = EDT
daylight변수는 summer time 즉,DST(Daylight Saving Time)
을 적용하는 경우에는 0이 아닌값이 온다고 합니다.
그런데 우리나라에서는 DST 가 없어졌는데요..
또..나라마다 DST 적용하는 시작 시점과 끝나는 시점이 다르기 때문에.. 정확히 설정하지 않으면 오히려 부작용이 생길거 같다는 생각이 드는데요..더군다나..이 값은 Os를 설치할때 설정하는것 같지도 않은데요..
그냥 형식적으로만 존재하는 것인가요?
두번째 timezone은 설명에 의하면 GMT기준의 시차라는데요..
단위가 second여서 .. 60*60으로 나눠봤더니 5시간이 나옵니다.
9시간이 나와야 할거 같은데요.. 게다가 이값은 Os설치시 설정하는데요..
=> (GMT+09:00) 서울
나머지 두가지는 큰 의미가 없어보입니다..
_tzset(); 이 함수를 실행시키지 않고 값들을 출력해보면
아래와 같은 default값이 나옵니다..
_daylight = 1 _timezone = 28800 _tzname[0] = PST _tzname[1] = PDT
이러한 점으로 미루어봤을때.. 분명 어떤 정보에 의해서 값이 셋팅이 되는거 같은데요.. 이게 왜 맞지 않는것인지 모르겠습니다.
설명부탁드립니다.
Forums:
_putenv()로 환경변수를 설정했기 때문입니다. 이것을 빼고 _tzs
_putenv()로 환경변수를 설정했기 때문입니다. 이것을 빼고 _tzset()만 호출하면
결과가 다를 것입니다.
답변감사합니다...
그렇군여.. _putenv( "TZ=EST5EDT" )
이게 문제였습니다.
9시간빠른것으로.. 정확하게 나옵니다.
답변감사합니다.^^
댓글 달기