TZ環境變數,時區,夏令時

2021-10-10 14:30:55 字數 3795 閱讀 6968

#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...