2014-09-30 125 views
1

我一直在試圖寫一個C++程序,這需要我做日期算術。 例如今天的日期(9-30-2014)減去4天,並且返回9-26-2014,或今天的日期加上3天返回10-3-2014。 我原來的思維過程是使用日期算術

的ctime

將在幾秒鐘內從1970年1月1日返回日期,我可以再加入或減去固定的秒數的天數並將結果傳遞到「put_time」的

了iomanip

的一部分,開始我只是試圖讓這個方法打印正確的日期,但我不能讓編譯器識別「put_time」

我我使用eclipse版本(4.4.0) 和「版本4.1.11(2) - 發行版(x86_64-unknown-cygwin)」作爲編譯器

從研究中我發現「put_time」只包含在某些C++的版本和我試圖運行此命令

`-std=c++0x` 

但是我仍然收到了同樣的錯誤「‘put_time’在此範圍內未聲明」

任何想法,將不勝感激

這是我到目前爲止運行的代碼!

//============================================================================ 
// Name  : Date.cpp 
// Author  : me 
// Version  : 
// Copyright : Your copyright notice 
// Description : date calculations 
//============================================================================ 

#include <iostream> 
#include <iomanip>  // std::put_time 
#include <ctime>  // std::time_t, struct std::tm, std::localtime 
#include <chrono>  // std::chrono::system_clock 
using namespace std; 

int main() { 
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! 

    time_t timer; 

    time(&timer); 

    cout << timer; 

    struct tm * ptm = localtime(&timer); 

    cout << put_time(ptm,"%c"); 



    return 0; 
} 
+0

「version 4.1.11(2)-release(x86_64-unknown-cygwin)」不是編譯器,它是編譯器*版本*。哪個編譯器是它的版本?當前的cygwin gcc是4.9.0,並且從來沒有4.1.11版本(* 2007 *中的最後一個4.1.x gcc)。 – molbdnilo 2014-09-30 21:31:48

回答

0

爲什麼不使用asctime?它的原型是char* asctime (const struct tm * timeptr);,你不應該有打印出他char *的問題。唯一的問題是輸出格式被固定爲Www Mmm dd hh:mm:ss yyyy,其中Www代表一週中三個字母的縮寫。

如果您希望輸出字符串格式更靈活,可以使用strftime來獲取自定義格式。它的原型是size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr);