자바 스크립트에서 iso 날짜를 밀리 초로 변환


89

ISO 날짜를 밀리 초로 변환 할 수 있습니까? 예를 들어이 iso를 변환하고 싶습니다.

2012-02-10T13:19:11+0000

밀리 초까지.

만든 날짜와 현재 날짜를 비교하고 싶기 때문입니다. 그리고 만든 날짜는 iso 날짜입니다.


1
정확히 "밀리 초"란 무엇을 의미합니까? 어느 시점에 상대적인 밀리 초? UNIX 타임 스탬프를 의미합니까?
Pekka

단지 야후 API처럼, 날짜는 밀리 세컨드로 표시되어 1328796537있지만, FB API의 날짜는 ISO에 표시됩니다2012-02-10T13:18:45+0000
로빈 카를로 Catacutan


@mplungjan과 관련이 있지만 정확하지는 않습니다. 두 번의 차이를 알고 싶습니다.
Robin Carlo Catacutan

그래서 일단 날짜로 번역 할 수있는 링크를 사용 date1.getTime() - date2.getTime()- 당신이 필요한 모든 것입니다
mplungjan

답변:


151

이 시도

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative

console.log(milliseconds);

편집하다

ISO 날짜를 제공했습니다. 또한 Date객체 생성자에서도 허용됩니다.

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
console.log(result);

편집하다

내가 찾은 최선의 방법은 오프셋을 수동으로 제거하는 것입니다.

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
console.log(withOffset);
console.log(withoutOffset);

작동하는 것 같습니다. ISO 문자열을 Date객체 로 변환하는 데 문제가 있는 경우 제공된 링크를 참조 할 수 있습니다.

편집하다

Prasad19sara의 의견에 따라 밀리 초로 잘못 변환되는 버그를 수정했습니다.


예, 날짜는 모든 브라우저에서 구문 분석되지 않습니다. 관련 질문에 대한 내 대답을 참조하십시오.
Vik David

그리고 당신의 대답에 대한 내 의견을 참조하십시오;)
mplungjan

이것은 파이어 폭스에서 작동하지 않습니다var myDate = new Date("2012-02-10T13:19:11+0000");
mplungjan

1
@mplungjan 왜이 접근 방식을 사용하지 않습니까? 나는 이것이 번거 롭다는 것을 알고 있지만 어쨌든))
Oybek

어 .. 그게 대문자 "T"라고요? 그것이 @mplungjan이 작동하지 않는 이유입니다.
wle8300

28

이전 솔루션의 약어는 다음과 같습니다.

var myDate = +new Date("2012-02-10T13:19:11+0000");

즉석 형식 변환을 수행하고 밀리 초 형식으로 날짜를 직접 출력합니다.

또 다른 방법은 EPOCH 시간을 밀리 초 단위로만 출력하는 Date util의 구문 분석 방법을 사용하는 것입니다.

var myDate = Date.parse("2012-02-10T13:19:11+0000");

당신은 '+', 거기에 약간의 오타가
스튜어트 Siegler

@ stuart-siegler 실제로 오타가 아닙니다. '+'는 날짜를 밀리 초 단위로 반환합니다.
LordTribual 2015

@LordTribual "+ new"는 밀리 초 단위로 날짜를 반환합니까?
Stuart Siegler 2015

1
@ stuart-siegler 특별히 "+ new"는 아니지만 "+"는 트릭을 수행하며 속기입니다. 예를 들어 밀리 초 단위의 시간을 +new Date()반환합니다 1447857230137.
LordTribual 2015

1
그것은 명시 적으로 자바 스크립트 Number 객체를 생성 훨씬 명확 : const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))하지만, new Date('2017-09-26T20:24:18.801Z').getTime()또는 new Date('2017-09-26T20:24:18.801Z').valueOf()더 많은 읽을 수 있습니다.
David G

5

2017 년의 또 다른 옵션은 Date.parse(). 그러나 MDN의 문서 는 ES5 이전에는 신뢰할 수 없다고 지적합니다.

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);

자세한 내용은 바이올린 을 참조하십시오.


내장 파서는 ECMAScript 2011 이후에도 신뢰할 수 없습니다 . :-)
RobG

2

또 다른 가능한 솔루션으로 현재 날짜를 비교하는 것입니다 January 1, 1970, 당신이 얻을 수 January 1, 1970에 의해 new Date(0);

var date = new Date(); 
var myDate= date - new Date(0);

2

예, 한 줄로 할 수 있습니다.

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673

이 기능의 반대는 무엇입니까!?
AG1

1

또 다른 해결책은 다음과 같이 Number 객체 파서를 사용하는 것입니다.

let result = Number(new Date("2012-02-10T13:19:11+0000"));
let resultWithGetTime = (new Date("2012-02-10T13:19:11+0000")).getTime();
console.log(result);
console.log(resultWithGetTime);

단지 같은 밀리이 변환 getTime()Date개체


0
var date = new Date()
console.log(" Date in MS last three digit = "+  date.getMilliseconds())
console.log(" MS = "+ Date.now())

이것을 사용하여 밀리 초 단위로 날짜를 얻을 수 있습니다.


0

var date = new Date (날짜 _ 문자열); var milliseconds = date.getTime ();

이것은 나를 위해 일했습니다!


0

UTC 날짜를 밀리 초
구문 으로 변환하려는 경우 : Date.UTC (년, 월,? 일,? 시간,? 분,? 초,? 밀리 초);
예 :
date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
console.log('miliseconds', date_in_mili);


0

누군가 ISO 날짜 에서 시간 만 가져오고 싶다면 다음이 도움이 될 것입니다. 나는 그것을 찾고 있었는데 그것에 대한 질문을 찾을 수 없었습니다. 그래서 누군가가 본다면 도움이 될 것입니다.

let isoDate = '2020-09-28T15:27:15+05:30';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);

출력은 isoDate의 유일한 시간입니다.

15:27
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.