簡體   English   中英

將時間從int轉換為c

[英]convert time from int in c

如果我在c中有一個代表日期的整數,如何打印實際的mm / dd / year?

代表自1601年1月1日(UTC)起100納秒間隔的數量的64位值

1183042181

如果我使用的是32位系統,並且必須從文件中讀取整數怎么辦?

C不是C ++

C的庫包含strftime函數,該函數將使用指定的格式字符串格式化struct tm。 當然,從那里您可以打印它。 所以:

  • 將您的FILETIME轉換為自1601年以來的秒數,除以10,000,000。
  • 通過減去1601-01-01和1970-01-01之間的秒數來轉換為標准UNIX時間戳。
  • 使用localtime()將其轉換為struct tm。
  • 使用strftime()獲取格式化的字符串。
  • 打印它。
  • 編寫一個函數來完成所有這些操作,因此您無需再次執行。

閱讀“ MSDN”部分:

備注

要將FILETIME結構轉換為易於顯示給用戶的時間,請使用FileTimeToSystemTime函數。

將時間放入struct tm然后調用strftime()

全部在<time.h>中聲明。

您可以使用此例程將64位值轉換為time_t結構

time_t FileTimeToUnixTime(FILETIME& ft)
{
    ULARGE_INTEGER li;
    assert(sizeof(ULARGE_INTEGER) == sizeof(FILETIME));
    memcpy(&li, &ft, sizeof(FILETIME));
    li.QuadPart -= 116444736000000000;
    li.QuadPart /= 10000000;
    return (time_t)(li.LowPart);
} 

當然,這僅在您的FILETIME確實在time_t范圍內時才有效。 我想您知道如何處理生成的time_t。

32位系統不會阻止您將64位讀取為二進制值。 如果您喜歡scanf,則可以使用“%llu”格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM