UTC Epoch를 로컬 날짜로 변환
나는 이것과 조금 싸우고 있다.에폭을 날짜 객체로 변환하려고 합니다.에폭은 UTC로 나에게 보내졌다.합격할 때마다new Date()
국지적인 시대라고 가정합니다.UTC 오브젝트를 만들고 나서setTime()
적절한 시대에 맞게 조정하기 위해, 그러나 유용하게 보이는 방법은toUTCString()
끈도 도움이 안 돼요이 문자열을 새 날짜에 전달하면 UTC임을 알 수 있지만, 인식되지 않습니다.
new Date( new Date().toUTCString() ).toLocaleString()
다음 시도에서는 로컬의 current epoch와 UTC의 current epoch의 차이를 알아내려고 했지만, 그것도 얻을 수 없었습니다.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
1000초 미만의 아주 작은 차이밖에 없습니다. 밀리초 단위입니다.
좋은 의견이라도 있나?
더 간단한 해결책이 있다고 생각합니다. 초기 날짜를 에폭으로 설정하고 UTC 단위를 추가합니다.초단위로 저장된 UTC Epoch 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()
1970년 1월 1일부터 밀리초를 반환합니다.epoch 타임스탬프가 있는 경우 1000을 곱하여 javascript 타임스탬프로 변환합니다.
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;
}
Epoch time(유닉스 Epoch time)은 1970년 1월 1일 00:00:00(UTC time) 이후 기한이 만료된 초수를 의미하며, 여기에 제시된 답변 중 일부가 암시한 밀리초가 아닙니다.
https://en.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(...)
"datetime" "datetime" "datetime" 입니다. 을 사용하다
var myDate = new Date( your epoch date *1000);
출처 - https://www.epochconverter.com/programming/ # scripts
[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시간 형식을 사용하여 장소를 선택하는 것뿐입니다.시간대가 아닙니다.
위 답변에 @djechlin 추가
d = '1394104654000';
new Date(parseInt(d));
EPOCH 시간을 사람이 읽을 수 있는 날짜로 변환합니다.EPOKE 시간의 유형은 정수여야 한다는 것을 잊지 마십시오.
이에 대한 가장 간단한 해결책은 다음과 같습니다.
var timestamp = Date.now(), // returns milliseconds since epoch time
normalisedTime = new Date(timestamp);
라는 말이 없어요.* 1000
new Date(timestamp)
이는 항상 날짜를 것즉, 51015로 하는 것입니다.(어쨌든, 2019년은 51015로 되어 있습니다.
가장 쉬운 방법
단위)이과 같습니다.1601209912824
- 이렇게 날짜 개체로 변환합니다.
const dateObject = new Date(milliseconds)
const humanDateFormat = dateObject.toString()
출력 -
Sun Sep 27 2020 18:01:52 GMT+0530 (India Standard Time)
- 날짜를 UTC로 하고 싶은 경우:
const dateObject = new Date(milliseconds)
const humanDateFormat = dateObject.toUTCString()
- 이제 원하는 대로 포맷할 수 있습니다.
편집
var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());
EDIT 고정
UTC 문자열을 "로컬" 문자열로 변환하라는 건가요?다음과 같은 작업을 할 수 있습니다.
var utc_string = '2011-09-05 20:05:15';
var local_string = (function(dtstr) {
var t0 = new Date(dtstr);
var t1 = Date.parse(t0.toUTCString().replace('GMT', ''));
var t2 = (2 * t0) - t1;
return new Date(t2).toString();
})(utc_string);
consid ,, consid해,,,, consid consid,epoch_time
" " ", ",
// for eg. epoch_time = 1487086694.213
var date = new Date(epoch_time * 1000); // multiply by 1000 for milliseconds
var date_string = date.toLocaleString('en-GB'); // 24 hour format
moment.js와 같은 라이브러리를 사용하지 않고 UTC와 UTC 간의 타임스탬프 및 날짜 변환을 해결하려면 다음 옵션을 참조하십시오.
UTC 타임스탬프를 사용하는 어플리케이션의 경우 로컬타임존과 여름시간대(해당하는 경우)를 고려하여 브라우저에 날짜를 표시해야 할 수 있습니다.같은 시간대라도 서머타임이 다른 날짜를 편집하는 것은 까다로울 수 있습니다.
Number
★★★★★★★★★★★★★★★★★」Date
다음의 확장자를 사용하면, 타임스탬프의 타임 존내의 날짜를 표시하거나 취득할 수 있습니다.예를 들어 밴쿠버에 있다고 가정해 봅시다.7월 또는 12월의 날짜를 편집하고 있는 경우는, PST 또는 PDT로 날짜를 편집하고 있는 것을 의미합니다.
이 솔루션을 테스트하려면 아래의 코드 스니펫을 체크할 것을 권장합니다.
밀리초로부터의 변환
Number.prototype.toLocalDate = function () {
var value = new Date(this);
value.setHours(value.getHours() + (value.getTimezoneOffset() / 60));
return value;
};
Number.prototype.toUTCDate = function () {
var value = new Date(this);
value.setHours(value.getHours() - (value.getTimezoneOffset() / 60));
return value;
};
날짜로부터의 변환
Date.prototype.getUTCTime = function () {
return this.getTime() - (this.getTimezoneOffset() * 60000);
};
사용.
// Adds the timezone and daylight savings if applicable
(1499670000000).toLocalDate();
// Eliminates the timezone and daylight savings if applicable
new Date(2017, 6, 10).getUTCTime();
직접 확인
// Extending Number
Number.prototype.toLocalDate = function () {
var value = new Date(this);
value.setHours(value.getHours() + (value.getTimezoneOffset() / 60));
return value;
};
Number.prototype.toUTCDate = function () {
var value = new Date(this);
value.setHours(value.getHours() - (value.getTimezoneOffset() / 60));
return value;
};
// Extending Date
Date.prototype.getUTCTime = function () {
return this.getTime() - (this.getTimezoneOffset() * 60000);
};
// Getting the demo to work
document.getElementById('m-to-local-button').addEventListener('click', function () {
var displayElement = document.getElementById('m-to-local-display'),
value = document.getElementById('m-to-local').value,
milliseconds = parseInt(value);
if (typeof milliseconds === 'number')
displayElement.innerText = (milliseconds).toLocalDate().toISOString();
else
displayElement.innerText = 'Set a value';
}, false);
document.getElementById('m-to-utc-button').addEventListener('click', function () {
var displayElement = document.getElementById('m-to-utc-display'),
value = document.getElementById('m-to-utc').value,
milliseconds = parseInt(value);
if (typeof milliseconds === 'number')
displayElement.innerText = (milliseconds).toUTCDate().toISOString();
else
displayElement.innerText = 'Set a value';
}, false);
document.getElementById('date-to-utc-button').addEventListener('click', function () {
var displayElement = document.getElementById('date-to-utc-display'),
yearValue = document.getElementById('date-to-utc-year').value || '1970',
monthValue = document.getElementById('date-to-utc-month').value || '0',
dayValue = document.getElementById('date-to-utc-day').value || '1',
hourValue = document.getElementById('date-to-utc-hour').value || '0',
minuteValue = document.getElementById('date-to-utc-minute').value || '0',
secondValue = document.getElementById('date-to-utc-second').value || '0',
year = parseInt(yearValue),
month = parseInt(monthValue),
day = parseInt(dayValue),
hour = parseInt(hourValue),
minute = parseInt(minuteValue),
second = parseInt(secondValue);
displayElement.innerText = new Date(year, month, day, hour, minute, second).getUTCTime();
}, false);
<link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.11/semantic.css" rel="stylesheet"/>
<div class="ui container">
<p></p>
<h3>Milliseconds to local date</h3>
<input id="m-to-local" placeholder="Timestamp" value="0" /> <button id="m-to-local-button">Convert</button>
<em id="m-to-local-display">Set a value</em>
<h3>Milliseconds to UTC date</h3>
<input id="m-to-utc" placeholder="Timestamp" value="0" /> <button id="m-to-utc-button">Convert</button>
<em id="m-to-utc-display">Set a value</em>
<h3>Date to milliseconds in UTC</h3>
<input id="date-to-utc-year" placeholder="Year" style="width: 4em;" />
<input id="date-to-utc-month" placeholder="Month" style="width: 4em;" />
<input id="date-to-utc-day" placeholder="Day" style="width: 4em;" />
<input id="date-to-utc-hour" placeholder="Hour" style="width: 4em;" />
<input id="date-to-utc-minute" placeholder="Minute" style="width: 4em;" />
<input id="date-to-utc-second" placeholder="Second" style="width: 4em;" />
<button id="date-to-utc-button">Convert</button>
<em id="date-to-utc-display">Set the values</em>
</div>
@Amjad, 좋은 생각이지만, 더 나은 구현은 다음과 같습니다.
Date.prototype.setUTCTime = function(UTCTimestamp) {
var UTCDate = new Date(UTCTimestamp);
this.setUTCFullYear(UTCDate.getFullYear(), UTCDate.getMonth(), UTCDate.getDate());
this.setUTCHours(UTCDate.getHours(), UTCDate.getMinutes(), UTCDate.getSeconds(), UTCDate.getMilliseconds());
return this.getTime();
}
언급URL : https://stackoverflow.com/questions/4631928/convert-utc-epoch-to-local-date
'IT' 카테고리의 다른 글
PHP가 특정 문자열 앞에 있는 모든 문자를 제거합니다. (0) | 2023.01.21 |
---|---|
JavaScript에서 이름(알파벳 순으로 배열 정렬) (0) | 2023.01.21 |
MySQL Get Quarter(QTD) 1, 2, 3, 4 (금년도) (0) | 2023.01.21 |
Windows에서 MySQL 또는 MariaDB 서버를 실행하기 위한 최소 파일 - (Portable MySQL/MariaDB) (0) | 2023.01.21 |
PHP의 정수 인덱스를 사용하여 연결 배열 액세스 (0) | 2023.01.21 |