일반 날짜를 유닉스 타임 스탬프로 변환


105

2012.08.10자바 스크립트에서 일반 날짜 를 유닉스 타임 스탬프 로 어떻게 변환 합니까?

Fiddle : http://jsfiddle.net/J2pWj/




여기에서 PHP, Ruby 등으로 변환하는 많은 게시물을 보았습니다.하지만 JS 내에서이 작업을 수행해야합니다.



1
newDate.getTime () / 1000을 사용해 보셨습니까?
Gareth Parker

@LokiAstari 네, 죄송합니다. 검색했지만 찾지 못했습니다.
Stan

1
어쩌면 내가 뭔가를 놓치고 있지만 unix timestamp모든 공학과 컴퓨터 과학의 기본입니다. 내장 된 편의 방법이 있었으면 좋겠다. 현재 사용하고 있습니다Math.floor((+new Date()) / 1000);
Mars Robertson

답변:


210
new Date('2012.08.10').getTime() / 1000

JavaScript Date 문서를 확인하십시오 .


1
문서 페이지에 감사드립니다.
Stan

32
Math.floor it or its not a unix timestamp (it 'll have a decimal)
BT

@ fguillen, Mooseman,이 코드를 실행하고 확인합니다. 유닉스 타임 스탬프를 날짜로 변환하면 2012.08.10 대신 2012.08.09가 표시됩니다. 왜 그런 겁니까..?
WP Learner

@ user2584538, 아래 내 대답을 참조하십시오. 소수점을 제거해야합니다.
theVinchi

1
@Mentor UNIX 시간이 아닌 밀리 초 단위로 측정됩니다
니쿠 Surdu

59
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

toFixed(0)밀리 초에서 초로 변환하려면 1000으로 나눌 때 소수점을 제거 하려면을 추가하는 것이 중요합니다 .

.getTime()함수는 밀리 초 단위로 타임 스탬프를 반환하지만 진정한 유닉스 타임 스탬프는 항상 초 단위입니다.


5
이것은 숫자가 아닌 문자열을 반환한다는 점에 유의하십시오.
Capaj

3
좋은 점, parseInt ()로 랩핑하여 다시 정수로 변환하도록 답변을 변경했습니다.
theVinchi

11

moment.js api를 확인해야합니다. 사용하기 매우 쉽고 많은 기능이 내장되어 있습니다.

나는 당신의 문제에 대해 다음과 같이 사용할 수 있다고 생각합니다.

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();

9

var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch


5

단항 + 연산자를 사용하면됩니다.

(+new Date('2012.08.10')/1000).toFixed(0);

http://xkr.us/articles/javascript/unary-add/- 날짜 아래를보십시오.


2
여기에 두 개의 주석을 추가하고 싶습니다. 단항 더하기 + 연산자 /는 이미 수학 연산자이므로 필요하지 않습니다 . 또한 toFixed유형이 중요한 경우 숫자가 아닌 문자열을 반환합니다.
Laurens


3
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

이 경우 정수만 반환하는 것이 중요합니다 (단순 나눗셈은 수행하지 않음). 또한 실제로 경과 된 초만 반환하는 것입니다 (이 코드가를 사용 Math.floor()하지 않고 사용하는 이유입니다 Math.round()).


2

Date.parse () 메서드를 사용하여 수행 할 수 있습니다.

Date.parse($("#yourCustomDate).val())

Date.parse ( "03.03.2016") 출력-> 1456959600000

Date.parse ( "2015-12-12") 출력-> 1449878400000


1
이 답변은 6 년 전에 Barmar가 제시 한 답변과 어떻게 다른 가요?
Capricorn

1
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;

1

타임 스탬프를 PHP의 타임 스탬프와 비교 한 후 위의 어느 것도 내 시간대에 맞지 않는 것 같습니다. 아래 코드는 내가하고있는 프로젝트에서 가장 중요한 PHP와 같은 결과를주었습니다.

function getTimeStamp(input) {
    var parts = input.trim().split(' ');
    var date = parts[0].split('-');
	var time = (parts[1] ? parts[1] : '00:00:00').split(':');

	// NOTE:: Month: 0 = January - 11 = December.
	var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
	return d.getTime() / 1000;
}

// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');

console.log(start + ' - ' + end);

NodeJS에서 이것을 사용하고 있으며 시간대 'Australia / Sydney'가 있습니다. 그래서 이것을 .env 파일에 추가해야했습니다.

TZ = 'Australia/Sydney'

위의 내용은 다음과 같습니다.

process.env.TZ = 'Australia/Sydney'

0

타임 스탬프를 유닉스 타임 스탬프로 변환합니다.

const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

변환 후 타임 스탬프를 얻으려면 const TimeStamp = new Date(date*1000).getTime(); //1513787412000

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