ftime과 gettimeofday는 Ubuntu 16에서 현재 시간대에 대해 0을 반환합니다. 시간대는 Ubuntu에서 제공하는 날짜 및 시간 설정에서 올바르게 설정됩니다. TZ env 변수 세트가 없습니다.왜 gettimeofday 시간대가 잘못 되었습니까?
많은 다른 상황에서 사용되는 프로덕션 소프트웨어이기 때문에 "수정"하고 싶지 않습니다. 그래서 나는 프로그래밍 방식으로 시간대 (그리고 현재의 DST 오프셋을 선호)를 얻는 안정적인 방법을 원한다.
내 시도까지 :
[email protected]:~$ date +%Z
AEDT
[email protected]:~$ date +%z
+1100
난 그냥 "날짜"를 호출 할 프로세스를 생성 할 수 있지만 그 때 손으로 매우 무거운 것 같다
#if 0
timeb tbTime;
ftime(&tbTime);
int CurTz = -tbTime.timezone;
#else
struct timeval tv;
struct timezone tz;
int r = gettimeofday(&tv, &tz);
if (r)
return NO_ZONE;
int CurTz = tz.tz_minuteswest;
#endif
'기간'명령이 작동한다 일부 API 호출을 사용할 수 있습니다.
나를 위해 올바르게 작동합니다 (TZ env도 정의 됨). OSX에서 테스트되었습니다. –
아마도 다른 시스템에는 다른 설정이 있기 때문일 수 있습니다. 그 코드는 Windows에서 잘 작동합니다. 어쩌면 제 우분투가 어떻게 든 파열 됐을까요? 하지만 현장에서 비슷한 "파열 된"시스템에서 작동하도록해야합니다. – fret