2017-03-13 1 views
-2

time.h으로 DOS (freeDos 1.1) 및 일반 C (Borland 5.0으로 컴파일)를 실행하는 컴퓨터가 있습니다. BIOS 또는 DATETIME DOS 명령을 사용하여 컴퓨터 시간을 설정할 때 표준 시간대에 대한 정보가 없습니다. 시간을 오전 10시 25 분으로 설정합니다. 내 C 프로그램이 작업을 수행c (time.h 함수) 및 DOS에서 표준 시간대 및 DST를 설정하는 방법

...

char timeString[80]; 
time_t timeT = time(NULL); 
strftime(timeString, sizeof(timeString), "%a %Y-%m-%d %H:%M:%S %Z", localtime(&timeT)); 
printf("%s\n", timeString); 

나는 %Z 포맷터에 의해 호출 나는 정확한 현재 시간 그러나 마지막에 "EST"시간대로 얻을 코드를 실행

.

월 2017년 3월 13일 동부 표준시 10시 25분 36초에게

time(NULL)에서 time_t 값이 수학적 사십칠년, 팔십삼일 15 시간 25 분 36 초 고장 1489418736.
입니다 반환
분명히 time.h은 현재 시간대에 5 시간을 추가하여 여기에 일부 시간대 정보를 구현하고 있습니다. time_t

new Date(1489418736 * 1000) 

월 월을 수신 자바 스크립트까지 이동

(13) 2017 그리니치 표준시 08시 25분 36초-0700은 (태평양 일광 절약 시간)

것 같다

시간대의 조합이 (EST와 PST, GMT) 및 일광 절약 시간 (여기에는 추가 시간이 고려 될 수 있습니다.)이 여기에 있습니다. 컴퓨터, 운영 체제 또는 C 라이브러리 표현의 표준 시간대 및 DST 설정에 영향을 주어 로컬 또는 GMT 중 가장 유용한 시간 표현을 얻으려면 어떻게해야합니까?

+0

당신이 무엇을 요구하고 있는지 분명하지 않습니다. 그것이 일부 DOS 명령에 관한 것이라면, 여기에 주제가 아닙니다. 프로그래밍하려면 [mcve]를 입력하고 구체적인 문제를 설명하십시오. 기본적인 질문은 "DOS가 시간대를 지원합니까?" – Olaf

+0

DOS 머신이 왜 있는지 궁금합니다. 마지막 DOS 릴리스는 16 년 전이었습니다. 과거로부터의 돌풍. – Amy

+0

질문이 더 잘 반영되도록 제목을 변경했습니다 (이미 게시물의 마지막 문장이었습니다). DOS를 사용하는 이유는 그것이 내가 할당 한 프로젝트이기 때문입니다. 내가 기계, OS, C 라이브러리 또는 그것의 사용법에 상관없이 구현되는 레벨이 무엇인지 완전히 모르기 때문에 질문이 불분명 한 이유는 무엇입니까? – robisrob

답변

0

오랜 세월이 지났지 만, C가 시간대를 결정하기 위해 찾는 DOS 환경 변수가 있다고 생각합니다. 환경 변수를 찾지 못하면 C는 EST로 기본 설정 될 수 있습니다. 나는 질문의 자바 스크립트 측면에 말할 수 없습니다.

0

일광 문제와 관련하여 코드에 문제가있을 것입니다. 미국의 현재 시간 오전 10시 25 분은 "Mon 2017-03-13 10:25:36 EDT"(EDT 대 EST)이어야합니다. 기발한 TurboC 코드는 진화 된 DST 규칙에 문제가있을 것입니다. 수십 년에 걸쳐 차이가있다. IMO

, TurboC localtime(), mktime()의 사용, struct tm.isdst 필드와 _daylight하는 것은 가능성이 일광 절약 시간과 관련된 모든 수율이 만족스럽지 못한 결과는 시간대 문제의 끝없는 원천이 될 것입니다. 하나는 현대 컴파일러/라이브러리를 사용 또는 가져 오기/자신 (우) 시간대/일광 루틴을 롤하지

대안을 time_t와 표준시에 충실 -. 로컬 시간을

+0

어쩌면 내 질문이 너무 복잡하여 time_t 값이 영향을받는 것 같아서 DOS에서 설정된 시간 이외에 5 시간이 걸리는 것 같습니다. 당신이 말했듯이 진정으로 그것을 고칠 수는 없기 때문에 나는 그저 5 시간을 빼고 하루 만 부른다고 생각합니다. – robisrob

+0

다른 사람들이 언급했듯이 "DOS"시간은 일반적으로 "현지 시간"이었고 유니버설로의 변환은 DST 설정의 표준 시간대와 시간대를 아는 것에 달려 있습니다. 컴퓨터가 그다지 모바일이 아니기 때문에 시간대는 일정하게 유지되었습니다. 불행히도 DST 교대는 알고리즘 적으로 (일부 고정 규칙에 따라) 종종 설정되었고,이 규칙은 산발적 인 [업데이트] (https://en.wikipedia.org/wiki/Daylight_saving_time_in_the_United_States#Extension_of_daylight_saving_time_.281975)에 적용되지 않았습니다. E2.80.931986.29). 행운을 빕니다. – chux

관련 문제