밀리초 수 에 따라 정확 한 '년 / 월 / 일 / 시 / 분 / 초 / 주' 를 계산 하 는 것 은 결코 쉬 운 일이 아니다.

밀리초 수 에 따라 현재 의 '년 / 월 / 일 / 시 / 분 / 초 / 주' 를 계산 하 는 것 은 결코 쉬 운 일이 아니다.
저자: 종 초 블 로그: 유 대 · PoechantBlog. CSDN. net 날짜: April 4th, 2012 다음 글 에서 몇 가지 공식 을 사용 할 것 이다. 예 를 들 어 empirical formulaGauss' formula 등 이다.주요 사상 은 Nginx 의 시간 관리 체제 에서 추출 되 었 다.
1 밀리초, 초, 분, 시
밀리초 수 를 알 고 있다 면:
unsigned int msec_total;

그러면 초 수 와 남 은 밀리초 수 는:
unsigned int sec_total = msec_total /  1000;
unsigned int msec = msec_total % 1000; /* What we want */

분 수 와 여 초 수 는:
unsigned int min_total = sec_total / 60;
unsigned int sec = sec_total % 60;

시간 수 와 여분 수 는:
unsigned int hour_total = min_total / 60;
unsigned int min = min_total % 60;

남 은 시간 수 는:
unsigned int hour = hour_total % 24;

남 은 내용 은 매우 중요 하 다.
2 총 일수
unsigned int day_total = hour_total / 24;
day_total = day_total - (31 + 28) + 719527; /* days since March 1, 1 BC */

3 년
윤년 이란 무엇 인가?다음 과 같은 몇 가지 종류 가 있다.
4 로 나 눌 수 는 있 지만 100 으로 나 눌 수 는 없다.
400 으로 나 눌 수 있어.
그래서 총 연 수 는:
/*     */
year = (days + 2) * 400 / (365 * 400 + 100 - 4 + 1);

일년 의 여 일 을 계속 알 아야 한다.
/* yday       */
yday = days - (365 * year + year / 4 - year / 100 + year / 400);

/*       0,         */
if (yday < 0) {
    /*    4  ,     100  ,    400   */
    leap = (year % 4 == 0) && (year % 100 || (year % 400 == 0));
    /*           */
    yday = 365 + leap + yday;
    year--;
}

구체 적 인 해석 은 주석 을 보아 라.
4 월과 날짜
유 대 에서 온 CSDN 블 로그: Blog. CSDN. net
여기 empirical formulaGauss' formula 를 사용 합 니 다.
/*
 * The empirical formula that maps "yday" to month.
 * There are at least 10 variants, some of them are:
 *     mon = (yday + 31) * 15 / 459
 *     mon = (yday + 31) * 17 / 520
 *     mon = (yday + 31) * 20 / 612
 */

/* 30.6         */
mon = (yday + 31) * 10 / 306;

/* the Gauss' formula that evaluates days before the month */

mday = yday - (367 * mon / 12 - 30) + 1;

if (yday >= 306) {

    year++;
    mon -= 10;

    /*
     * there is no "yday" in Win32 SYSTEMTIME
     *
     * yday -= 306;
     */

} else {

    mon += 2;

    /*
     * there is no "yday" in Win32 SYSTEMTIME
     *
     * yday += 31 + 28 + leap;
     */
}

5 주
wday = (4 + days) % 7; /*       ?  ,1970 1 1      */

6 날짜 정리
msec; /*    */
sec;  /*   */
min;  /*   */
hour; /*    */
mday; /*   */
mon;  /*   */
year; /*   */
wday; /*    */

후기
7.1 윤 초 를 컴퓨터 에 기록 하 는 시간 계산 방법 은?
윤 초 는 사람 이 가입 한 것 인 데 컴퓨터 에 서 는 어떻게 표시 합 니까?윤초 가 언제 삽 입 될 지 는 사람 이 결정 한다. 단지 원인 은 탐구 할 수 있 을 뿐 공식 이나 절차 로 계산 할 수 없다.
7.2 윤초 가입 여 부 를 누가 결정 합 니까?
윤초 가입 여 부 는 파리 에 있 는 국제 지구 자전 과 참조 좌표 시스템 서비스 에 의 해 결정 된다. 그 리 력 의 매년 6 월 이나 12 월 마지막 날 의 마지막 분 에 초 를 뛰 거나 초 를 뛰 지 않 는 다. 즉, 매년 이 두 분 의 1 분 은 60 초 가 아니 라 60 초 상하 로 변 하 는 것 이다.
7.3 윤초 의 표결 중지 (이하 중국어 위 키 에서 발췌)
글로벌 포 지 셔 닝 시스템 서비스 인터페이스 위원 회 는 텍 사 스 주 워 스 버그 에서 열 린 제4 7 차 회의 에서 윤초 정지 표결 안 을 우편 으로 보 냈 다 고 발표 했다.이 표결 안의 계획 은 [1] 이다.
2008 년 4 월: 국제 전신 연맹 의 작업 팀 은 연구 팀 에 윤초 정 지 를 권고 하 는 7A 건의 프로젝트 를 제출 할 것 이다.
연구 팀 은 2008 년 메 일 을 통 해 회원국 들 에 게 투 표를 통 해 이 안건 을 표결 할 예정 이다.
2011 년: 70% 이상 의 회원국 이 동의 하면 국제 전신 회 의 는 이 건의 안 을 비준 할 것 이다.
2013 년: 70% 이상 의 회원국 이 윤 초 를 폐지 하면 윤 초 는 사용 을 중단 하고 세계 시 (UTC) 는 연속 적 인 시간 눈금 자가 된다.
-
유 대 에서 온 CSDN 블 로그: Blog. CSDN. net
-

좋은 웹페이지 즐겨찾기