2010-10-22 132 views
2

我需要一個給定的日期轉換爲包含自1月1日的毫秒數的int 1970(Unix時間戳)C++如何將年 - 月 - 日格式的日期轉換爲unix時代格式?

我嘗試以下的代碼:

tm lDate; 

lDate.tm_sec = 0; 
lDate.tm_min = 0; 
lDate.tm_hour = 0; 
lDate.tm_mday = 1; 
lDate.tm_mon = 10; 
lDate.tm_year = 2010 - 1900; 

time_t lTimeEpoch = mktime(&lDate); 

cout << "Epoch: " << lTimeEpoch << endl; 

結果是曆元:1288584000,其對應於星期一,2010年11月1日04:00:00格林尼治標準時間

編輯:我期待2010年10月1日,顯然tm_mon是自1月以來的月數, 所以正確的行將是lDate.tm_mon = 10 -1 ;

+0

您剛剛做了,那麼問題是什麼?具體來說,你和你想要的有什麼不同? – 2010-10-22 20:36:16

+0

你期待什麼答案(DD MM YYYY等符號)? – Thanatos 2010-10-22 20:36:25

回答

2

正如人指定頁面,tm_mon是: 自1月起的月數,範圍爲0到11.

0

您可能會被時區弄糊塗了。我想你錯過了這一點,從該名男子頁:

mktime()功能將一個破舊的時間結構,表示爲本地時間 ...

+0

描述的問題是在本月,而不是在一小時。 – 2010-10-22 20:48:02

+1

@Benoit Thiery:OP從此編輯過他的文章:當我發佈這個答案時,OP沒有具體說明他得到的輸出有什麼問題。你的帖子是讓我發表評論,詢問他期待什麼日期,因爲我覺得時區或月份答案都是同樣可能的。 – Thanatos 2010-10-22 20:53:16

+0

好的,對不起,我錯過了歷史。在這種情況下,您可能想要刪除答案,但取決於您。 – 2010-10-22 21:19:05

相關問題