1樓:望山
機器內部表示的日期時間,現有庫已經基本夠用了。麻煩的是處理字串表示的日期時間。但是這個問題英國和美國都不同(10-08-09是哪年幾月幾號?
),要確定使用者是哪中國人、使用者在哪國地方、使用者的程式打算給哪中國人用、使用者的程式的使用者在哪國地方,完全超出了C++語言的能力,需要作業系統提供大量資訊,而不同作業系統提供此類資訊的方式各不相同,並且都不完善。
2樓:starwlstar
c++11也有chrono,但還是太難用了。
stl某些設計真的太辣雞,冗餘複雜難用。
chrono我反正沒用,還是自己封裝的。
3樓:acebear
2023年:世界無線電會議在11月決議繼續沿用閏秒,2023年再行檢討
2023年潤了1秒,2023年又潤了1秒,2023年至今尚沒有潤在潤秒這個事情搞定前,不好搞啊
如果你的程式是寫在GPS/北斗接收機裡的 ,計算座標位置就需要考慮到潤秒的問題,不然你的接收機計算出來的位置會被人罵死
4樓:黃亮anthony
C語言中提供那個簡單的日期時間庫,已經可以處理絕大多數場景。
它的時間點是用time_t表示,一般來說它是乙個秒值,但也有例外。它能做的事情不多,只用於比較兩個時間的先後。比如用difftime取兩個時間點之間的差值秒。
取當前時間的函式是time(NULL),注意那個空值。
日期和時間差異類是struct tm,它可以通過mktime轉化成乙個時間點。
而從時間點time_t型別得到struct tm,常用localtime,或者不考慮時區時用gmtime。
最常用的當然還有strftime可以把struct tm表示為字串。而從字串轉成struct tm則需要麻煩sscanf函式,需要寫乙個格式說明。或者用posix的strptime函式。
C++11的話,可以用新增的get_time/put_time與stream一起使用。
這些看起來平淡無奇,那麼最神奇的地方在mktime的struct tm引數可以接受不合理的資料,比如取100天以後的時間點,基本方法是:
time_t now = time(nullptr);
tm* date = gmtime(&now);
date->tm_mday += 100;
time_t later = mktime(date);
cout << "now: " << put_time(gmtime(&now), "%c %Z") << '\n';
cout << "later: " << put_time(gmtime(&later), "%c %Z") << '\n';
這其實就形成了很好的乙個計算各種時間間隔的函式,計算幾秒,幾天,幾月,幾年前後都可以,因為它同時也修改struct tm這個引數,所以也可以當成乙個求日曆的函式。
在大多數,秒級,時間範圍不大(1970-2038)之間的時間計算,這套簡單的庫都可以完全滿足要求。
返回C執行時內部資料的API ,例如上面的localtime/gmtime,容易被不太看文件的人當成有問題的函式。
而windows下,這些函式使用的內部資料是執行緒專用,它是執行緒安全的。[2]
5樓:XZiar
我其實不太清楚怎麼樣算是方便。
C++11之前就跟C是一樣的狀況,C怎麼做C++就怎麼做。
C++11帶來了chrono,已經具備了強型別的時間運算。
不過往後幾個更新都沒涉及chrono,或許主流C++真的已經跟這種靠近使用者的操作漸行漸遠了(時間的操作是常見的,演算法底層去計算時間很正常。但日期操作就是另一回事了,比較靠近業務層)。
如果說「方便」的目標是格式化、輸入方便的話,這是C++的老大難問題啊,cin、cout做帶格式輸入輸出的彆扭,又不是一天兩天了。
C++20帶來了format,對chrono也有特化,應該會有所改觀吧。
資料庫為什麼不提供直接運算元據的介面
已登出 不就是NoSQL那套嗎 靈活性和簡易性 易用性是很難平衡的。比如平時寫個正則都要哭爹叫娘,但你一條條寫規則,寫自動機來parse又繁瑣得要死。所以這個平衡的任務應該交給開發者,由開發者自己編寫CRUD的細節。 許通 朋友,你聽說過 ElasticSearch嗎?安利一下。滑稽 關係型資料庫 ...
為什麼《集合啦!動物森友會》不提供方便的島嶼建設功能?
哆瑞r 一直以來我一直在吐槽動森各種神坑,島嶼建設不方便,地板要一塊一塊鋪 河流一點一點挖 懸崖一層一層蓋,真的很爆肝。後來想了想這個設定本來就是為了讓你把節奏緩下來。再比如房子搬遷 裝修 公升級,亦或者橋和坡道都要第二天完工而且一天只能修乙個,都是為了讓你對明天有所期待,延長遊戲壽命。第二天會迫不...
為什麼c 沒有一套簡化語法的函式庫?
王旭競 這是問的二進位制串轉ascii吧?因為這事確實不難。但是可能性太多,單位元組 雙位元組 多位元組,endian,指標 string,trim 大小寫.所以這種事自己封裝個貼近工程的二進位制處理庫就好。至於標準,它推薦你用iostream,其實額外好處也很多。 暮無井見鈴 zh.cpprefe...