我一直在尝试编写一个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)-release(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 :(得分: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 );