#include #include #include #include /**
* * tz環境變數,時區,夏令時
* 當前demon測試環境: 1.32為系統; 2.系統時區是utc。
* */int main()
; struct timezone tzone = ;
tz = getenv("tz");
printf("***********************************=> tz = %s\n", tz == null?"env tz not seted" : tz );
now = time(null); //1970到現在的utc時間的秒數;
printf("time_t = %ld, ctime: = %s", now, ctime(&now) ); //char* ctime(const time_t *timer)返回乙個表示當地時間的字串(包含乙個換行符),當地時間是基於引數 timer。
gettimeofday(&tval, &tzone);
printf("gettimeofday tval.tv_sec = %d, tval.tv_usec = %d; tzone.tz_minuteswest = %d, tzone.tz_dsttime = %d.\n", \
tval.tv_sec, tval.tv_usec, tzone.tz_minuteswest, tzone.tz_dsttime);
tm_ = gmtime(&now); //轉換成utc世界時間
printf("gmtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
tm_ = localtime(&now); //轉換成本地時間
printf("localtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
printf("\n");
setenv("tz", "cst-8", 1);//設定時區(中國東八區)
tz = getenv("tz");
printf("***********************************=> tz = %s\n", tz == null?"env tz not seted" : tz );
now = time(null);
printf("time_t = %ld, ctime: = %s", now, ctime(&now) );
gettimeofday(&tval, &tzone);
printf("gettimeofday tval.tv_sec = %d, tval.tv_usec = %d; tzone.tz_minuteswest = %d, tzone.tz_dsttime = %d.\n", \
tval.tv_sec, tval.tv_usec, tzone.tz_minuteswest, tzone.tz_dsttime);
tm_ = gmtime(&now);
printf("gmtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
tm_ = localtime(&now);
printf("localtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
printf("\n");
setenv("tz", "nzst-12:00:00", 1);//設定時區(紐西蘭標準時間)
tz = getenv("tz");
printf("***********************************=> tz = %s\n", tz == null?"env tz not seted" : tz );
now = time(null);
printf("time_t = %ld, ctime: = %s", now, ctime(&now) );
gettimeofday(&tval, &tzone);
printf("gettimeofday tval.tv_sec = %d, tval.tv_usec = %d; tzone.tz_minuteswest = %d, tzone.tz_dsttime = %d.\n", \
tval.tv_sec, tval.tv_usec, tzone.tz_minuteswest, tzone.tz_dsttime);
tm_ = gmtime(&now);
printf("gmtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
tm_ = localtime(&now);
printf("localtime: dstflag = %d, %d-%d-%d %d:%d:%d\n",tm_->tm_isdst, tm_->tm_year + 1900, tm_->tm_mon+1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);
printf("\n");
/***
* nzdt-13:00:00,m10.1.0,m3.3.0
* * nzst,表示紐西蘭標準時間;
* * -12:00:00表示比utc早12小時;
* * nzdt,表示紐西蘭夏時制時間;
* * -13:00:00,表示夏時制時間比utc早13小時(即比標準時間快1小時);
* * m10.1.0,m3.3.0表示夏令時從10月第乙個星期日02:00:00開始到3月第三個星期日02:00:00結束。
* ==>m:指一年中的第幾月(1 <= m <= 12)。
* ==>w:指乙個月中的第幾周(1 <= w <= 5),1表示第一周,5表示最後一周。
* ==>d:指一周中的第幾天(0 <= d <= 6),0表示星期天。
* ==>time:該欄位表示本地時間對夏時制生效或結束的時間,如果省略預設為02:00:00。
* */ setenv("tz", "nzst-12:00:00nzdt-13:00:00,m10.1.0,m3.3.0", 1);//設定時區(紐西蘭夏令時時間)
tz = getenv("tz");
printf("***********************************=> tz = %s\n", tz == null?"env tz not seted" : tz );
//while(1)
return 0;
}
關於時區的環境變數TZ
我們在linux中設定時區的時候通常是通過設定tz環境變數達到目的 bash中 export tz cst 8 設定為東八區時間 c程式中 setenv tz cst 8 1 tz環境變數用於設定時區。它由各種時間函式用於計算相對於全球標準時間 utc 以前稱為格林威治標準時間 gmt 的時間。格式...
各國時區夏令時切換資訊
時區國家夏令時跳入夏令時跳出 utc 12 國際日期變更線西 utc 11 薩摩亞群島 0 跳變到 1 1 跳變到 0 utc 11 協調世界時 11 utc 10 夏威夷utc 9 阿拉斯加 2 跳變到 3 2 跳變到 1 utc 8 太平洋時間 美國和加拿大 2 跳變到 3 2 跳變到 1 ut...
android 如何修改對應時區的夏令時 冬令時
1 主要關注下1 00表示時區add 1,0表示不做改變 以倒數第四行為例,表示2001年5月1號後的第乙個星期天2 00 24h 開始,時區加1 以倒數第三行為例,表示2001年9月最後星期天2 00 24h 開始,時區還原成原來的 1 修改完成後,執行路徑development tools zo...