2014-12-02 1 views
0

누구든지 ctime을 사용하여 수학을 수행하는 방법을 알고 있습니까? 나는 "time_t"(보통은 그렇듯이)에서 초 단위로 시간을 얻을 수 있어야하고 시간과 날짜를 얻기 위해 time_t를 ctime에 입력하기 전에 그 시간에서 초 수를 뺀다.ctime 및 time_t 수학

그래서 기본적으로 그것은 매우 많은 초 전에 날짜를 계산합니다.

답변

0

당신이 시도 할 수 :

time_t now = time(NULL); 
struct tm now_tm = *localtime(&now); 
now_tm.tm_sec -= 50; // subtract 50 seconds to the time 
now_tm.tm_sec +=1000; // add 1000 sec to the time 
printf("%s\n", asctime(&now_tm)); 
0

time_t는 필수 유형입니다. 항상 초를 나타 내기 때문에 자유롭게 정수를 더하거나 뺄 수 있습니다.

예 :

time_t now = time(nullptr); 
time_t one_minute_ago = now - 60; 
std::cout << ctime(&one_minute_ago) << std::endl; 
+0

나는 time_t가 일반적으로 두 번째는 아니지만 항상 – deeiip

+1

이 아니라고 생각한다. time_t는 추상화 된 것으로 간주되지만 실제로는 요즘은 보통 초당 64 비트이다. – seand

2

time_t 날짜와 시간의 가장 기본적인 표현은 타입 time_t입니다. time_t 변수의 값은 1970 년 1 월 1 일 이후의 초 수로, 때때로 Unix 시대를 호출합니다. 이 값을 비교하기 쉽기 때문에 이벤트의 시작 및 종료 시간을 내부적으로 표현하는 가장 좋은 방법입니다. 구조체 TM time_t는 하나의 숫자로 날짜와 시간을 나타내는 반면, 구조체 TM 숫자의 많은 구조체로 표현 : 당신은에 써서 time_t 값을 변환 할 수 있습니다

struct tm 
{ 
    int tm_sec;   /* Seconds. [0-60] (1 leap second) */ 
    int tm_min;   /* Minutes. [0-59] */ 
    int tm_hour;   /* Hours. [0-23] */ 
    int tm_mday;   /* Day.  [1-31] */ 
    int tm_mon;   /* Month. [0-11] */ 
    int tm_year;   /* Year - 1900. */ 
    int tm_wday;   /* Day of week. [0-6] */ 
    int tm_yday;   /* Days in year.[0-365] */ 
    int tm_isdst;   /* DST.  [-1/0/1]*/ 
}; 

변환 의 현지 함수를 사용하여 구조체 TM 값 : 그래서

struct tm startTM; 
    time_t start; 

    /* ... */ 

    startTM = *localtime(&start); 

을,이

같은 초 일련 번호를 뺄 뺄 수 있습니다
startTm.tm_sec -= somesecond; 

추가 변환이

ctime(&start) 

는 것이 도움이 할 수있는 희망이

struct tm startTM; 
    time_t start; 

    /* ... */ 

    start = mktime(&startTM); 

처럼 time_t와 날짜를 변환 ctime이 재미를 사용합니다!