2014-09-30 75 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);