2014-09-30 1 views
1

나는 C++ 프로그램을 작성하려고 노력했다. 날짜 계산을해야했다. 예 : 오늘 날짜 (9-30-2014)에서 4 일을 뺀 후 9-26-2014를 반환하거나 오늘 날짜와 10-3-2014를 반환하는 3 일을 더합니다. 내 원래 생각 과정은 사용하는 것입니다날짜 arithmatic

1970년 1월 1일에서 초 단위로 날짜를 반환합니다

, 나는 다음 추가 또는 일 수 초 일련 번호를 빼고에 결과를 전달할 수 ctime이 "put_time"

iomanip

의 일부가 난 그냥 올바른 날짜를 인쇄하려면이 방법을 얻기 위해 노력하고 시작합니다,하지만 난 컴파일러가 "put_time"

I를 인식 할 수 없습니다 컴파일러로 "버전 4.1.11 (2) -release (x86_64-unknown-cygwin)"와 함께 을 사용하고 있습니다.

"put_time"은 특정 C++의 버전과는 난 여전히 같은 오류 " 'put_time이'이 범위에서 선언되지 않았다"모든 아이디어이게

주시면 감사하겠습니다

를 수신하고

`-std=c++0x` 

그러나이 명령을 실행 시도 지금까지 실행중인 코드!

//============================================================================ 
// 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

"버전 4.1.11 (2) -release (x86_64-unknown-cygwin)"는 컴파일러가 아니며 컴파일러 * 버전 *입니다. 어느 컴파일러가이 버전입니까? 현재 cygwin gcc는 4.9.0이며, 4.1.11 릴리스가 없었습니다 (마지막 4.1.x gcc는 * 2007 *에있었습니다). – molbdnilo

답변

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

관련 문제