日期算术

时间:2014-09-30 20:42:08

标签: c++ cygwin

我一直在尝试编写一个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;
}

1 个答案:

答案 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 );

相关问题