mktime64()- 轉換當地時間

格式

#include <time.h>
time64_t mktime64(struct tm *time);

語言層次

ILE C 延伸

安全執行緒

區分語言環境

現行語言環境的 LC_TOD 種類可能會影響此函數的行為。

說明

mktime64() 函數會將 time所指向的已儲存 tm 結構 (假設為工作當地時間) 轉換成 time64_t 值,適合與其他時間函數搭配使用。 轉換之後, time64_t 值將被視為「世界標準時間 (UTC)」。 對於此轉換, mktime64() 會檢查當地時區及日光節約時間 (DST) 的現行語言環境設定。 如果未在現行語言環境中設定這些值,則 mktime64() 會從現行工作取得當地時區及 DST 設定。 如果在語言環境中設定 DST ,但未設定時區資訊,則會忽略語言環境中的 DST 資訊。 然後, mktime64() 函數會使用現行工作的時區資訊來決定 UTC。

時間 所指向部分結構元素的值不受限於針對 gmtime64()所顯示的範圍。

傳遞至 mktime64()tm_wdaytm_yday 值會被忽略,並在傳回時獲指派其正確值。

tm_isdst 的正或 0 值會導致 mktime() 一開始分別假設 DST 在指定時間是否有效。 tm_isdst 的負值會導致 mktime() 嘗試判定 DST 是否在指定時間有效。

附註: 此函數支援的日期和時間範圍是 0 1/0 1/1 9 7 0 00:00:00 至 1 2/3 1/9 9 9 23:59:59。

回覆值

mktime64() 函數會傳回類型為 time64_t的「世界標準時間 (UTC)」。 如果無法代表「通用座標時間」,或給定的 時間 超出範圍,則會傳回值 (time_t) (-1) 。 如果給定的 時間 超出範圍,則錯誤碼會設為 EOVERFLOW。

範例

此範例會列印從現行日期算起 40 天 16 小時的星期幾。
#include <stdio.h>
#include <time.h>
 
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
                 "Thursday", "Friday", "Saturday" };
 
int main(void)
{
  time64_t t1, t3;
  struct tm *t2;
 
  t1 = time64(NULL);
  t2 = localtime64(&t1);
  t2 -> tm_mday += 40;
  t2 -> tm_hour += 16;
  t3 = mktime64(t2);
 
  printf("40 days and 16 hours from now, it will be a %s \n",
          wday[t2 -> tm_wday]);
}
 
/*******************  Output should be similar to:  ***************
 
40 days and 16 hours from now, it will be a Sunday
*/

相關資訊