2012-09-08 2 views
1

독자적으로 프로그램을 만들고 싶습니다. 그러나 C/C++ 기술은 여전히 ​​매우 기본입니다.사용자의 시간대에 따라 현재 시간을 알려주는 프로그램 만들기 (C++)

입력하십시오 시간대 : 동부 시간
시간

난 당신이 예를 들어

를 입력 시간대에 따라 당신에게 시간을 알려주는 프로그램을 만드는 정말 관심 시간대는 그리니치 표준시 -5있다 : 00
현재 시간입니다 12시 19분 다른 시도 하시겠습니까 오후
(Y/N)

?

그 라인을 따라 뭔가. 궁극적으로 나는이 지식을 사용할 수 있기를 원하고 주위에 어지럽히고 멋지게 보이는 앱 주위에 몇 가지 기본적인 프리 드로를 만드는 데 적용하고 싶다. 궁극적으로 저는 비디오 게임이나 다른 소프트웨어를 개발하기 시작할 때 (그리고 다른 많은 중요한 기능들)이 적용될 수 있기를 원합니다.

이 경우 컴퓨터를 통해 타임 스탬프가 적용될 가능성이 높습니다. 그것은 사용하고 있지만 어떻게 액세스합니까?.

필자는 CPLUSPLUS 라이브러리에서 발견 다양한 기능으로 보면서 나는 일부 기능 건너 한

"의 현지" "gmtime" 와 "시간"

하지만 난 (등 현재 시간을 얻기위한) 이러한 기능이 어떻게 만들어 졌는지, 프로세스, 사용 된 공식을 알고 싶습니다. 나는 어떻게 그런 생각을하게 될까?

나는 심지어 시간대가 어떻게 계산되는지를 보았고 "경도의 각 라인은 15도 차이가 있고 매 15도마다 1 시간이 다릅니다"- Wiki Answers.

이것은 몇 일 동안 생각해 본 것입니다.

그래서 나는 모든 도움에 감사드립니다

(그것이 OSX 또는 유닉스/리눅스 또는 윈도우 여부 차이가 있는지 확실하지 않습니다),

감사를 사용하여이 C++ 주로 윈도우 기반의 컴퓨터를 할 계획 !

우드

+1

http://www.boost.org/doc/libs/1_51_0/doc/html/date_time/local_time.html – ForEveR

+1

여기에 시간대에 대한 기록과 그 이유가 나와 있습니다. http://geography.about.com/od/physicalgeography/a/timezones.htm 및 다른 소스는이 웹 사이트 http://www.timeanddate.com/time/time-zones.html이며이 stackoverflow PHP 질문 http : //stackoverflow.com/questions/5584602/determine-timezone-from-latitude-longitude-without-using-web-services-like-geona –

+0

많은 도움을 주신 분들께 감사드립니다! 뛰어난 대답이었던 – Umeed

답변

2

이 기능에 대한 공식 설명서를 살펴 보는 것이 좋습니다. 개발을 위해 많이 권하는 UNIX 환경 (Windows의 Cygwin과 같은)에서는 man 시스템을 통해 C 표준 함수에 대한 문서를 얻을 수 있습니다. man 3 time 또는 man gmtime을 입력하십시오. Windows에서, 적어도 내가 아는 한, 그러한 문서화 시스템은 없다. 당신은 함수에 대한 문서를 google로 가져와야 할 것이다.

time() 메서드는 헤더 파일 <ctime> (또는 순수 C의 경우 <time.h>)에 정의되어 있습니다. 1970-01-01 00:00 UTC (GMT +0) 이후로 경과 한 초 수를 반환합니다. 이를 UNIX 시간이라고도합니다. 이 값에서 실제 날짜 (년, 월, 일,시, 분, 초)를 계산하는 것은 매우 간단한 작업입니다 (윤년 등을 고려해야합니다).다른 시간대의 시간 (예 : GMT +1)을 알고 싶다면 time()에 의해 반환되는 값에 3600 * <your timezone offset here>을 추가하면됩니다.

time() 메서드는 내부적으로 C 표준 라이브러리에서 구현되거나 운영 체제의 커널에서 시스템 호출로 직접 구현됩니다.이 커널은 다시 CMOS 배터리로 전원을 공급받는 마더 보드의 Real-Time-Clock에서 시간을 계산합니다 PC를 끄고 전원 공급 장치에서 연결을 끊은 경우에도 시간을 추적 할 수 있습니다.

또한 코드의 이식성을 보장하기 위해 항상 Windows 전용 메서드 대신 표준 C 메서드를 사용해야합니다. std::chrono :

편집

대부분 gcc 및 Microsoft 컴파일러의 최신 버전에서 지원되는 C++11 표준은 또한 시간을 얻기의 새로운 표준 방법을 제공합니다. std::chronotime()의 두 번째 정확도와 반대로 마이크로 초의 정확도를 지원합니다.

+0

, 감사합니다. 이것은 확실히 내가 올바른 방향으로가는 데 도움이됩니다. 모두 굉장합니다. – Umeed

관련 문제