C語言實現時間戳轉日期的演算法

2021-08-02 14:01:32 字數 1619 閱讀 4331

一.可以通過現有函式實現

c語言庫函式:localtime就可以獲得乙個時間戳對應的具體日期了

在標準c/c++中,我們可通過tm結構來獲得日期和時間,tm結構在time.h中的定義如下:

#ifndef _tm_defined

struct tm ;

#define _tm_defined

#endif

ansi c標準稱使用tm結構的這種時間表示為分解時間(broken-down time)。

可以使用的函式是gmtime()和localtime()將time()獲得的日曆時間time_t結構體轉換成tm結構體。

其中gmtime()函式是將日曆時間轉化為世界標準時間(即格林尼治時間),並返回乙個tm結構體來儲存這個時間,而localtime()函式是將日曆時間轉化為本地時間。

#include

#include

int main(void)

範例:#include

main();

time_t timep;

structtm *p;

time(&timep);

p = localtime(&timep);//取得當地時間

printf ("%d%d%d ",(1900+p->tm_year),(l+p->tm_mon), p->tm_mday);

printf("%s%d:%d:%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);

}執行結果:

2000/10/28 sat 11:12:22

二.演算法實現

時間是有週期規律的,4年乙個週期(平年、平年、平年、閏年)共計1461天。windows上c庫函式time(null)返回的是從2023年1月1日以來的毫秒數,我們最後算出來的年數一定要加上這個基數1970。總的天數除以1461就可以知道經歷了多少個週期;總的天數對1461取餘數就可以知道剩餘的不足乙個週期的天數,對這個餘數進行判斷也就可以得到月份和日了。

static int days = 24*3600;

static int fouryears = 365*3+366;

static int normoth = ;

static int leapmoth = ;

void gethourminsec(int nsecond)

void getmothandday(bool bleapyear, int ndays, int *nmoth, int *nday)

else

break;

}ndays = ntmp;

}return;

}void print_time()

else if (nremain < 365*2)

else if (nremain < 365*3)

else

getmothandday(bleapyear, nremain, &ndecmoth, &ndecday);

printf("%d:%d:%d\n", ndecyear, ndecmoth, ndecday);

gethourminsec(ntime%days);

return;}

int main(void)

vue 過濾器實現時間戳轉日期格式

js部分 先定義vue例項及函式方法,再定義過濾器方法實現。render函式是渲染乙個檢視,然後提供給el掛載,如果沒有render那頁面什麼都不會出來,vue 例項選項物件的 render 方法作為乙個函式,接受傳入的引數 h 函式,返回 h 的函式呼叫結果。new vue vue.filter ...

C語言實現字元轉unix時間戳的簡單例項

c語言實現字元轉unix時間戳,需要先轉成tm型別,再得到它的unix時間戳。附上實現 include 程式設計客棧dio.h include int strtotime char datetime 另附上幾個時間相關的函式,做個筆記 當前時間 char get curr time 當前時間的uni...

C語言 日期時間轉秒數

將例如 2020年8月14日 12 30 15 的日期時間轉換為從1970年1月1日0時0分0秒開始至今的utc時間秒數,不計閏秒。中國大陸 中國香港 中國澳門 中國台灣與utc的時差為 8 include include include time t datetime2sec int year,i...