作者HILL33LOVE (就是愛希爾)
看板C_and_CPP
標題[問題] DST時間有問題
時間Fri Feb 7 19:50:11 2014
要計算DST的時間(+1小時)
於是先取現在的時間time_t
再把它+3600秒
Time2印出來發現跟Time1一樣,沒有加3600秒
可是我用另外一個time_t的變數 (clock_dst)
去等於clock,再去印時間(Time3)
發現有加一個小時
很好奇為什麼Time2的時間沒有多一小時
而用另外一個變數去等於時,就有多一個小時了!?
謝謝大家
void test()
{
time_t clock;
time(&clock);
/* DST */
DEBUG("Time1: %s", ctime(&clock));
clock = clock + 3600;
DEBUG("Time2: %s", ctime(&clock));
time_t clock_dst;
clock_dst = clock;
DEBUG("Time3(%d): %s", (int)clock_dst, ctime(&clock_dst));
}
結果如下:
Time1: Fri Feb 7 19:43:39 2014
Time2: Fri Feb 7 19:43:39 2014
Time3(1391777019): Fri Feb 7 20:43:39 2014
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.17.31
→ Feis:不確定你在哪個平台. 此外 time_t 在 C 標準是實作相依, 不 02/07 20:22
→ Feis:一定代表秒數. 不過我跑你的 code 沒問題. 應該有神祕事件? 02/07 20:22
推 EdisonX:一定要用 clock 這麼尷尬的變數名稱嗎? clock_t clock(); 02/07 23:47
推 EdisonX:@Feis,我以為time_t 是從 UTC 1970.1.1 經過了多少 "秒", 02/07 23:49
→ EdisonX:還是我還停留在 C++11 前 @@ 02/07 23:50
推 littleshan:time() 傳回 seconds since Epoch 是 POSIX 標準 02/08 00:22
推 EdisonX:原來如此. 02/08 00:27