2013-05-27 108 views
2

所以,我想要做的一類傳遞這樣的:日期和時間操作++

class Delivery{ 
private: 
    string recipient; 
    time_t date; 
} 

因此,日期是time_t的。我想要做的是讓用戶輸入交貨日期。也許交付是在今天,也許明天,也許是下個月。我可以使日期屬性字符串日期而不是time_t。爲什麼我沒有那樣做?因爲我有一份交貨清單,我想對交貨進行分類,然後打印在一定時間內交貨的貨物。例如,打印2013年3月12日至2013年8月25日期間的交貨。

問題是:我該如何讓用戶設置日期?我搜索了互聯網,但沒有找到任何有用的功能。有沒有辦法解決這個問題?

+1

[boost.Date_time](http://www.boost.org/doc/libs/release/doc/html/date_time.html)可能是合適的。 – Cubbi

+0

可能重複[如何轉換包含時間\ _t類型的字符串變量在c + +?](http://stackoverflow.com/questions/11213326/how-to-convert-a-string-variable-containing-time至時間 - 叔型在-c)的 – user93353

回答

0

聲明假定你讀了輸入到格式01/01/13命名time_string字符串:

struct tm tm; 
strptime(time_string, "%D", &tm); 
time_t t = mktime(&tm); 

如果包括全年,例如01/01/2013,用strptime(time_string, "%m/%d/%Y", &tm);代替strptime(time_string, "%D", &tm);%m是當月,%d當天和%Y全年,例如, 2013而不是13.還要注意,如果time_stringstd::string而不是C風格的字符串,則需要在strptime的調用中將time_string替換爲time_string.c_str()

來源:https://stackoverflow.com/a/11213640/2097780http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.bpxbd00%2Fstrptip.htm

0

日期/時間工作涉及使用struct tmtime_t數據結構。

要轉換time_tstruct tm,有幾個不同的充功能,如localtime()gmtime()

要轉換從struct tmtime_t,您使用mktime()。顯然,您還需要編寫一些代碼,將年份,月份,日期以及可能的小時和分鐘讀取爲整數值,然後用相關值填寫struct tm,然後撥打mktime()將其轉換爲到「1970年1月1日以來的秒數」,以time_t的值表示。

所有功能都做到這一點在<ctime>