
이상한 상황이 발생했습니다. 최근에는 Azure 클라우드에서 Digital Ocean 서버로 이동했습니다. 저는 Nodejs 버전 v10.15.0과 Centos 7을 사용하고 있습니다.
내 timedatectl 출력은 다음과 같습니다.
[deploy@prod-ca-api install-scripts]$ timedatectl
Local time: Tue 2019-03-19 15:34:21 IST
Universal time: Tue 2019-03-19 10:04:21 UTC
RTC time: Tue 2019-03-19 10:04:21
Time zone: Asia/Kolkata (IST, +0530)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[deploy@prod-ca-api install-scripts]$
하루의 시작 시간을 설정하여 날짜를 출력하면 현재 날짜에 대한 적절한 출력이 제공됩니다. 그러나 1900년 이하의 날짜에 대해서는 24분 차이로 동일하게 응답합니다.
내 시간대 설정은 IST(+5.30)입니다.
[deploy@prod-ca-api install-scripts]$ date
Tue Mar 19 15:36:57 IST 2019
[deploy@prod-ca-api install-scripts]$ node
> let a = new Date()
undefined
> a.setHours(0,0,0,0)
1552933800000
> a
2019-03-18T18:30:00.000Z
> a = new Date('1700-01-01')
1700-01-01T00:00:00.000Z
> a.setHours(0,0,0,0)
-8520357208000
> a
1699-12-31T18:06:32.000Z
이전에는 Azure 서버 1699-12-31T18:30:00.000Z
에서1699-12-31T18:06:32.000Z
답변1
사실 적절한 시간은 18:06이 되어야 한다고 생각합니다. 나는 이 글을 읽고 다음과 같은 결론을 내렸다.https://www.dailyo.in/variety/indian-standard-time-time-zones-bagan-time/story/1/17080.html
이 기사의 관련 부분은 다음과 같습니다.
인도와 이웃 스리랑카에서 스리랑카 표준시라고 부르는 인도 표준시는 UTC+05:30의 오프셋을 갖습니다.
이는 명확하고 이해하기 쉽습니다.
인도에는 1906년까지 공식적인 시간대가 없었습니다. 봄베이, 캘커타, 마드라스라는 세 개의 대통령직이 있었고, 세 도시의 경도상 위치에 따라 세 개의 현지 시간이 있었습니다. 이렇게 생성된 세 개의 시간대 뒤에는 그 주변 및 근처의 모든 주 또는 도시가 이어졌습니다.
이것이 흥미로워지는 곳입니다. 인도에는 1906년 1월 1일까지 공식 시간대가 없었던 것 같습니다. 이는 귀하의 경험적 연구와 일치합니다.
캘커타는 UTC+05.54로 설정되어 현재 IST의 +00:24가 됩니다.
이것은 NodeJS의 이상한 동작을 설명합니다. 다시 한 번 귀하의 연구와 일치합니다.
이 역사에는 더 많은 내용이 있지만 어쨌든 나는 이 두 경우 모두 시간이 정확할 수 있다고 결론을 내립니다. 전체 시간대가 존재하지 않았기 때문에 이러한 오래된 날짜의 정확한 시간을 결정하는 것은 매우 어렵습니다. 일반적으로 오래된 날짜를 신뢰해서는 안 됩니다. 시간대가 매우 혼란스러울 수 있고 국가가 다른 달력을 사용했을 수도 있기 때문입니다. 또한 예를 들어 1600년대의 날짜를 사용하는 현실적인 사용 사례도 없습니다.