나는 입력/출력을 계산할 수있는 C++ 코드를 가지고 있습니다. (입력 된 날짜를 특정 증분으로 늘리거나 줄일 수 있음을 의미합니다. 그것에 대한 계산).C++ time_t back to before 1/1/1970
나는 내 코드에 time_t 변수를 사용합니다. msdn 문서 accroding time_t는 1970 년 1 월 1 일 이후에 elasps 된 초 수입니다. 그래서 주어진 입력 날짜에 나는 1970 년 1 월 1 일부터 elasp 된 초를 먼저 계산하고, time_t vcariable에 저장하고 나중에 다른 모든 계산에 localtime()을 사용합니다.
내 입력 날짜가 1970 년 1 월 1 일 이상이지만 그 전에 날짜별로 분류되기 때문에 내 코드가 올바르게 작동합니다.
질문 : 제가 1970 년 1 월 1 일 전에 갈 수있는 다른 변수 나 구조가 있습니까? 또는 1970 년 1 월 1 일 이전에 time_t 변수를 조작하는 방법이 있습니다.
미리 감사드립니다.
나는 02/01/1970로 시작합니다. 나는 제 그때
void localtime(int* py = 0, int* pm = 0, int* pd = 0,
int* ph = 0, int* pn = 0, int* ps = 0,
int* pwday = 0, int* pyday = 0, int* pisdst = 0) const
{
struct tm* ptm = ::localtime(&t_);
if (py) *py = ptm->tm_year + 1900;
if (pm) *pm = ptm->tm_mon + 1;
if (pd) *pd = ptm->tm_mday;
if (ph) *ph = ptm->tm_hour;
if (pn) *pn = ptm->tm_min;
if (ps) *ps = ptm->tm_sec;
if (pwday) *pwday = ptm->tm_wday;
if (pyday) *pyday = ptm->tm_yday;
if (pisdst) *pisdst = ptm->tm_isdst;
}
를 사용 제가 사용하여 2 개월을 줄이려 : maketime (Y, m + 카운트, D, H, N, S)을; Y = 1,970, m = 2, 개수 = -2, D = 1은 다음과 같이 (상기 코드의 출력으로부터 maketime()이다..
이 t_ = -1 결과void maketime(int y, int m, int d, int h = 0, int n = 0, int s = 0)
{
struct tm t;
t.tm_year = y - 1900;
t.tm_mon = m - 1;
t.tm_mday = d;
t.tm_hour = h;
t.tm_min = n;
t.tm_sec = s;
t.tm_isdst = -1;
t_ = ::mktime(&t);
}
다시 난의 현지을 (호출이 결과 지금
) 및
struct tm* ptm = ::localtime(&t_);
의 현지 제 1 내측 라인()이 실패하면 t_ = -1.
1 개월을 빼기하려고하면 예를 들어, 무슨 일이 일어날 지 확실하지 않다가 할 수있는 방법이 없습니다 설명서에서 당신에게 알려주기 때문에 01/01/1970 이전에 갈 time_t 변수를 조작하십시오. –
'time_t'는 부호있는 값이므로 어떤 문제가 있는지 이해하지 못합니다. 더 자세하게 얘기해 주 시겠어요? –
안녕하세요. Mark 사용중인 코드로 게시물을 업데이트했습니다. 내가 실패한 곳에서 설명했다. – user1612986