linux系統對時間函式的操作需要注意的問題

2021-08-02 22:24:30 字數 922 閱讀 6992

簡單點說,就是,在使用gmtime() 和 localtime()操作的時候,不能多次呼叫這些對struct tm結構體操作的函式,他們不是執行緒安全的。這些函式返回的指標實際上是指向同乙個變數,多次操作會改變對應的struct tm的結構體中的資料。詳見man gmtime

程式舉例

#include #include int main(int argc, char ** argv)

程式的輸出:

process begin at        [0x400594]

current time is         [1498122880]

address of struct tm *p_stm is  [0x7fffb9ebfbb0]. pointer to object is  [0x390f193420]

struct tm *p_stm is     [2017-06-22 09:14:40] time_zone is [gmt]

address of struct tm *p_stm2 is         [0x7fffb9ebfba8]. pointer to object is  [0x390f193420]

struct tm *p_stm2 is    [2017-06-22 17:14:40] time_zone is [cst]

(*p_stm) after calling localtime() is   [2017-06-22 17:14:40] time_zone is [cst]

說明:根據日誌,可以看到,上述程式中的gmtime()和localtime()所返回的結構體的位址是同乙個,也就是說,定義的兩個指標實際上是指向的同乙個物件。當使用localtime()修改了struct tm的結構體指標的時候,gmtime()返回的指標所指向的物件也發生改變。

js對時間的操作

獲取當前時間 var mydate new date 獲取時間中的年月日時分秒 mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 0 11,0代表1月 mydate.getdate 獲...

C 對時間的操作

獲取當前星期的開始日期和結束日期 private void timebe out string bdate,out string edate else if firstday.dayofweek dayofweek.monday else if firstday.dayofweek dayofwee...

C 中對時間的操作

1 datetime 數字型 system.datetime currenttime new system.datetime 1.1 取當前年月日時分秒 currenttime system.datetime.now 1.2 取當前年 int 年 currenttime.year 1.3 取當前月 ...