日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux时间戳转换不对,转换为unix时间戳不正确

發(fā)布時(shí)間:2023/12/10 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux时间戳转换不对,转换为unix时间戳不正确 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我有我寫了一個(gè)函數(shù)(如果有一個(gè)很好的標(biāo)準(zhǔn)替代,請(qǐng)讓我知道...)轉(zhuǎn)換為unix時(shí)間戳不正確

time_t get_unix_time(string time_str) {

time_t loctime;

time(&loctime);

struct tm *given_time;

time_str = time_str.substr(0, time_str.find_first_of('.'));

replace(time_str.begin(), time_str.end(), ':', ',');

replace(time_str.begin(), time_str.end(), '-', ',');

replace(time_str.begin(), time_str.end(), '/', ',');

replace(time_str.begin(), time_str.end(), ' ', ',');

given_time = localtime(&loctime);

vector trecord = split_string(time_str, ',');

given_time->tm_year = atoi(trecord.at(0).c_str()) - 1900;

given_time->tm_mon = atoi(trecord.at(1).c_str()) - 1;

given_time->tm_mday = atoi(trecord.at(2).c_str());

given_time->tm_hour = atoi(trecord.at(3).c_str());

given_time->tm_min = atoi(trecord.at(4).c_str());

given_time->tm_sec = atoi(trecord.at(5).c_str());

return mktime(given_time);

}

輸入(time_str)的函數(shù)是格式1970-01-01 00:00:00.0。所述split_string()函數(shù)把字符串time_str到含有載體:

{1970年,01,01,00,00,00}

其用于填寫given_time結(jié)構(gòu)。

我寫了一個(gè)函數(shù)來(lái)測(cè)試它,并正確地通過(guò)它輸入(epoch開(kāi)始)。但是,它給我的時(shí)間是21600,這是1970-01-01 06:00:00或UTC + 6。期望的輸出是(時(shí)期的開(kāi)始)。

注意:我在美國(guó)中部時(shí)區(qū),即UTC - 6。1970年1月1日午夜CST,time @ UTC將在1970年1月1日06:00:00。

我的函數(shù)中是否有任何特定于我的時(shí)區(qū)的東西?我在這個(gè)函數(shù)中做了什么錯(cuò)誤,或者我可以做些不同的事情來(lái)使它獨(dú)立于區(qū)域,或者至少總是UTC。

2011-01-13

Sagar

+0

此外,我不能使用boost庫(kù)或任何其他庫(kù)。我只能使用標(biāo)準(zhǔn)的C++東西。 –

2011-01-13 16:22:55

+1

C++庫(kù)中的時(shí)區(qū)處理很隱晦。如果你的環(huán)境變量`TZ`的值設(shè)置為UTC,那么這段代碼就可以工作。 –

2011-01-13 16:36:18

+1

mktime將當(dāng)前時(shí)間解釋為給定時(shí)間。所以如果你給1970-01-01 00:00:00它會(huì)在你的當(dāng)?shù)貢r(shí)間,所以mktime將返回UTC-0時(shí)間,即1970-01-01 06:00:00 –

2011-01-13 16:38:42

總結(jié)

以上是生活随笔為你收集整理的linux时间戳转换不对,转换为unix时间戳不正确的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。