2012-03-18 4 views
0

나는 사용자가 자신의 생일을 입력 할 프로그램을 만들려고 노력하고 있으며, 프로그램은 그들이 살았던 몇 일, 몇 달, 몇 년, 몇 시간 그리고 몇 분을 계산할 것입니다.C++에서 날짜와 시간을 분할하는 방법은 무엇입니까?

나는 Google을 검색했으며 날짜를 3 ~ 4 부분으로 나누는 방법이 있음을 알았습니다.

이 코드를 복사했는데 제대로 작동하는 것 같습니다. 그것은 내가 그것을 이해하지 못한다는 것입니다. 내가 읽은 모든 포럼은별로 도움이되지 않습니다. 아무도 나에게 그것을 설명 할 수 있습니까?

time_t t = time(NULL); 
tm* timePtr = localtime(&t); 

cout << "seconds= " << timePtr->tm_sec << endl; 
cout << "minutes = " << timePtr->tm_min << endl; 
cout << "hours = " << timePtr->tm_hour << endl; 
cout << "day of month = " << timePtr->tm_mday << endl; 
cout << "month of year = " << timePtr->tm_mon << endl; 
cout << "year = " << timePtr->tm_year + 1900 << endl; 
cout << "weekday = " << timePtr->tm_wday << endl; 
cout << "day of year = " << timePtr->tm_yday << endl; 
cout << "daylight savings = " << timePtr->tm_isdst << endl; 
+5

어느 부분을 이해하지 못합니까? –

+0

전통적인 월별 번호 매기기 (1 월은 1 월이지만 'tm_mon'은 1 월 등 0을 사용합니다)를 얻으려면 한 달에 하나씩 더 추가해야하지만, 이미 그 해를 1900 년 이상 돌보아 봤습니다. 설명하니? 'localtime()'은 프로그램의 현재 시간대와 함께 작동합니다; 당신은'gmtime()'을 사용하여 UTC (일명 GMT)의 시간 값을 결정할 것입니다. 그리고 시간대는 일반적으로 삶을 더욱 복잡하게 만듭니다. –

+1

그 코드에서 이해할 부분이 많지 않습니다. ** localtime() ** 함수는 더러운 작업을 모두 처리하며 ** tm ** 필드에 액세스하여 결과를 읽습니다 (** time_t ** 유지 ** tm **은 콤포넌트의 날짜 (초, 분,시, 일, 월, 연도 및 기타 유용한 정보)를 나눈 동안 압축 된 형태의 날짜 –

답변

0

하지 표준 C++ 코드입니다. 이것은 (또한) POSIX 코드입니다.

(최근 C++ 11 표준은 당신에게 <chrono>을 제공하지만, 몇 가지 컴파일러를 구현, 리눅스는 GCC 4.6 또는 4.7이 필요합니다; 또한 <ctime>가)

매우 당신과 관련된 질문에 this answer를 참조하십시오 .

time의 경우 gettimeofday, localtime, strftime 설명서 페이지에는 설명서가 잘 작성되어 있습니다. 너 이해 하지마?

(내가 준 링크를주의 깊게 읽고 링크 된 페이지를주의 깊게 읽으십시오).

+1

''및 ''헤더의 C++ 표준 버전? –

+0

수정 됨, 감사합니다. –

0

대부분의 컴퓨팅 환경에서 날짜와 시간은 통일 된 개념입니다. C 런타임 라이브러리 (C++)는 1970-01-01T00 : 00 : 00 UTC 이후 시간 (및 날짜)을 초 단위로 측정하는 time_t 유형을 제공합니다.

localtime() 함수는 time_t 소요 변환이 인간에게 익숙한 (컴퓨터 — 시간대도 특별히 지정할 수로부터 얻어진다) 로컬 시간대에 따른되는 일정 형상으로 필드. 이와 비슷한 또 다른 호출이 있습니다. gmtime()은 로컬 시간대를 고려하지 않지만 이전에는 GMT라고했던 UTC 시간대를 항상 사용합니다.

원하는 것을하고 사용자의 생년월일, 생년월일 및 시간대를 수락하고 time_t으로 변환하십시오. 그런 다음 현재 time() 값에서 해당 값을 뺍니다. 차이는 그들이 살아있는 시간 (초)입니다. 친절하려면 년, 월, 일, 시간, 분 및 초로 변환하려면 gmtime()을 사용하십시오.

관련 문제