나는 지금 이것과 조금 싸워왔다. 에포크를 날짜 객체로 변환하려고합니다. 신기원은 UTC로 나에게 보내진다. new Date()
에포크 를 통과 할 때마다 로컬 에포크라고 가정합니다. UTC 객체를 만든 다음 setTime()
적절한 시대로 조정하는 데 사용 했지만 유용한 유일한 방법은 toUTCString()
문자열이며 도움이되지 않습니다. 해당 문자열을 새로운 날짜로 전달하면 UTC라는 것을 알 수 있지만 그렇지 않습니다.
new Date( new Date().toUTCString() ).toLocaleString()
다음 시도는 로컬 현재 시대와 UTC 현재 시대 사이의 차이를 얻으려고 시도했지만 그중 하나도 얻을 수 없었습니다.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
1000 미만의 작은 차이 만 밀리 초 단위입니다.
어떤 제안?
답변
더 간단한 해결책이 있다고 생각합니다. 초기 날짜를 시대로 설정하고 UTC 단위를 추가하십시오. UTC 에포크 var가 초 단위로 저장되어 있다고 가정 해보십시오. 어때요 1234567890
? 현지 시간대로 적절한 날짜로 변환하려면 다음을 수행하십시오.
var utcSeconds = 1234567890;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);
d
이제는 내 시간대의 날짜로 설정되었습니다. Fri Feb 13 2009 18:31:30 GMT-0500 (EST)
답변
간단합니다 new Date()
. 예를 들어 밀리 초가 걸립니다.
new Date(1394104654000)
> Thu Mar 06 2014 06:17:34 GMT-0500 (EST)
답변
그리고 로그의 경우 포맷을 위해 사용했던 Moment.js 라이브러리를 사용 하여이 작업을 수행 했습니다.
moment.utc(1234567890000).local()
>Fri Feb 13 2009 19:01:30 GMT-0430 (VET)
답변
에포크 시간에 초 1970 년 1 월 1 일에서 date.getTime()
반환 밀리 초 당신은 시대의 타임 스탬프가있는 경우, 1000 곱하여 자바 스크립트 타임 스탬프로 변환 … 그래서, 1 월 1 일 1970.
function epochToJsDate(ts){
// ts = epoch timestamp
// returns date obj
return new Date(ts*1000);
}
function jsDateToEpoch(d){
// d = javascript date obj
// returns epoch timestamp
return (d.getTime()-d.getMilliseconds())/1000;
}
답변
function ToLocalDate (inDate) {
var date = new Date();
date.setTime(inDate.valueOf() - 60000 * inDate.getTimezoneOffset());
return date;
}
답변
[ms]의 현재 에포크 시간을 24 시간으로 변환합니다. 12 시간 형식 을 비활성화 하려면 옵션을 지정해야 할 수도 있습니다 .
$ node.exe -e "var date = new Date(Date.now()); console.log(date.toLocaleString('en-GB', { hour12:false } ));"
2/7/2018, 19:35:24
또는 JS로 :
var date = new Date(Date.now());
console.log(date.toLocaleString('en-GB', { hour12:false } ));
// 2/7/2018, 19:35:24
console.log(date.toLocaleString('en-GB', { hour:'numeric', minute:'numeric', second:'numeric', hour12:false } ));
// 19:35:24
참고 : 사용 en-GB
여기가, 24 시간 형식을 사용하여 장소의 단지 (랜덤) 선택, 그것은 시간대 아니다!
답변
에포크 시간 (즉, 유닉스 에포크 시간) 거의 항상의 수 초 1970년 1월 1일 0시 0분 0초 (UTC 시간)부터 만료,하지의 수 밀리 초 여기에 몇 가지 답변을 암시했다.
https://ko.wikipedia.org/wiki/Unix_time
따라서 Unix Epoch 시간 값이 주어지면 아마도 초 단위가 될 것이며, 다음과 같이 보일 것 1547035195
입니다. 이 사람을 JavaScript로 읽을 수있게하려면 값을 밀리 초로 변환하고 해당 값을 Date(value)
생성자에 전달해야합니다 . 예 :
const unixEpochTimeMS = 1547035195 * 1000;
const d = new Date(unixEpochTimeMS);
// Careful, the string output here can vary by implementation...
const strDate = d.toLocaleString();
d.setUTCMilliseconds(0)
JavaScript Date(value)
생성자는 현지 시간이 아닌 밀리 초 단위 로 UTC 값을 사용 하므로 허용 된 답변 의 단계 를 수행 할 필요가 없습니다 .
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
또한 Date(...)
문자열 날짜 시간 표현을 사용하는 생성자를 사용 하지 않아야합니다 (권장되지 않음).
