結合QDateTime,跨平台下日期和時間的獲取

2021-10-05 16:32:12 字數 1891 閱讀 8104

static

inline

int64_t

floordiv

(int64_t a,

int b)

static

inline

intfloordiv

(int a,

int b)

// 當前的日期對應的儒略日

static

inline

int64_t

juliandayfromdate

(int year,

int month,

int day)

/* * math from the calendar faq at

* this formula is correct for all julian days, when using mathematical integer

* division (round to negative infinity), not c++11 integer division (round to zero)

*/int a =

floordiv(14

- month,12)

;int64_t y =

(int64_t

)year +

4800

- a;

int m = month +

12* a -3;

return day +

floordiv

(153

* m +2,

5)+365

* y +

floordiv

(y,4)-

floordiv

(y,100)+

floordiv

(y,400)-

32045;}

注:qt使用qint64,c++使用int64_t

enum

;// 當前的時間對應的毫秒數

static

inline

unsigned

intmsecsfromdecomposed

(int hour,

int minute,

int sec,

int msec =0)

q_os_win:

#include

// 獲取日期、時間

systemtime st;

memset

(&st,0,

sizeof

(systemtime));

getlocaltime

(&st)

;typedef

struct _systemtime systemtime,

*psystemtime,

*lpsystemtime;

getlocaltime:獲取本地時間

getsystemtime:獲取通用協調時(utc, universal time coordinated)

// 當前utc時間距離1970.1.1過去的毫秒數

int64_t

currentmsecssinceepoch()

// 當前utc時間距離1970.1.1過去的秒數

int64_t

currentsecssinceepoch()

q_os_unix:

// 當前utc時間距離1970.1.1過去的毫秒數

int64_t

currentmsecssinceepoch()

// 當前utc時間距離1970.1.1過去的秒數

int64_t

currentsecssinceepoch()

struct timeval

;

c 列舉在跨平台下的陷進

看上去一切正常,windows伺服器下也執行正常,但linux伺服器下卻無法自動觸發事件 後來發現,應該也無法顯式觸發事件,但eventid在設定觸發狀態時被強轉賦值了另乙個int,避免了這個問題,也增加了問題的隱蔽性。gdb除錯後發現event.prvindex,event.curindex都為6...

Android平台下sax,dom,pull解析

1.android中三種xml的解析方式,分別為dom,sax,pull,其中pull的解析方式最優 2.dom,sax,pull解析方式的區別 1 dom解析方式 首先一下子載入整個文件然後再挨個節點解析,費流量 優點 對於處理大文件,以及能力強的cpu效能比較快 缺點 對於處理能力不夠強的cpu...

Android平台下sax,dom,pull解析

1.android中三種xml的解析方式,分別為dom,sax,pull,其中pull的解析方式最優 2.dom,sax,pull解析方式的區別 1 dom解析方式 首先一下子載入整個文件然後再挨個節點解析,費流量 優點 對於處理大文件,以及能力強的cpu效能比較快 缺點 對於處理能力不夠強的cpu...