날짜를 타임 스탬프로 변환하는 방법?


165

날짜를 타임 스탬프로 변환하고 싶습니다 26-02-2012. 입력은 입니다. 나는 사용했다

new Date(myDate).getTime();

NaN이라고합니다. 이것을 변환하는 방법을 아는 사람이 있습니까?



date.js 라이브러리를 살펴보고 싶을 것입니다 : datejs.com
rsbarro

1
Date(myDate).getTime()코드로 표시된 것을 사용 했습니까 , 아니면 코드의 일부가되기 전에 "새"라는 단어입니까? 더 많은 노력을 기울일수록 더 나은 답변을 얻을 수 있습니다.
TJ Crowder

@rsbarro : 더 이상 유지되지 않는 것 외에는 (그리고 버그가 있습니다). 그래도 MomentJS 는 꽤 좋아 보입니다.
TJ Crowder

@ TJCrowder 나는 date.js를 사용했고 그것이 필요한 것에 효과가 있었지만 한동안 적극적으로 노력하지 않은 것은 맞습니다. momentjs를 확인하겠습니다. 감사!
rsbarro

답변:


203
var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+","+myDate[0]+","+myDate[2];
console.log(new Date(newDate).getTime());​

최신 정보:

var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+"/"+myDate[0]+"/"+myDate[2];
console.log(new Date(newDate).getTime());

데모 (Chrome, FF, Opera, IE 및 Safari에서 테스트)


불행히도 Safari5에서는을 반환하므로 작동하지 않습니다 NaN. Safari에서는 new Date(year, month, day);다음 예제와 관련하여 가능한 다른 생성자를 사용해야합니다 .new Date(myDate[2], myDate[1], myDate[0]);
insertusernamehere

13
날짜 문자열을 "유럽"에서 "미국"형식으로 변환하는 대신 ISO 8601 형식 ( YYYY-MM-DD) 으로 변환하는 것이 좋습니다. ISO 8601 형식 ( )으로 이해하는 Date()것이 일반적이며 날짜 문자열에 대해 가장 상호 운용 가능한 형식입니다.
Walter Tross

3
참고 : new Date(newDate).getTime()밀리 초 해상도의 타임 스탬프가 생성됩니다.
h7r

3
초 사용 : Math.floor(new Date(newDate).getTime() / 1000)
metamagikum

54

이 함수를 사용해보십시오. Date.parse () 메서드를 사용하며 사용자 지정 논리가 필요하지 않습니다.

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));

25
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();

24

이 리팩토링 된 코드는 그것을 할 것입니다

let toTimestamp = strDate => Date.parse(strDate)

이것은 ie8-를 제외한 모든 최신 브라우저에서 작동합니다.


10

여기에는 두 가지 문제가 있습니다. 먼저, 날짜 인스턴스에서만 getTime을 호출 할 수 있습니다. 새 날짜를 괄호로 묶거나 변수에 할당해야합니다.

둘째, 적절한 형식의 문자열을 전달해야합니다.

작업 예 :

(new Date("2012-02-26")).getTime();

1
날짜 인스턴트를 대괄호로 묶을 필요가 없습니다. 올바른 문자열 형식 만 필요합니다.
maswerdna

5

날짜 숫자를 바꾸고 다음 -으로 변경 하면됩니다 ,.

 new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)

귀하의 경우 :

 var myDate="26-02-2012";
 myDate=myDate.split("-");
 new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();

PS UK 로캘은 여기서 중요하지 않습니다.


이 날짜 형식도 유효하지 않으며 브라우저 간 및 로케일이 안정적으로 작동하지 않습니다 (예를 들어 영국 로케일이있는 Chrome에서는 그렇지 않습니다). 형식을 제안하려는 경우 실제로 작동하도록 문서화 된 형식을 제안하십시오.
TJ Crowder

developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… 에서 예제를 얻습니다 . 방금 끈을 치우는 것을 잊었습니다. 이제 작동합니다.
antonjs

2
적어도 위의 코드는 유효하지 않은 날짜 형식을 사용하지 않습니다. 두 가지 이유로 인해 잘못된 날짜를 제공하는 것입니다. 위에서 2014 년 3 월 2 일 날짜를 정의했습니다 (필드 순서가 엉망입니다). 필드의 순서가 올바른 경우 2012 년 3 월 26 일 (월 값은 0에서 시작) 날짜를 정의하게됩니다 . 그러나 OP에는 일련의 숫자가 아닌 문자열이 있으므로 이러한 문제를 해결하더라도 유용하지는 않습니다.
TJ Crowder

@TJ Crowder 제안 해 주셔서 감사합니다. 문자열을 숫자로 변환한다고 말한 것처럼 코드를 수정했습니다. 자비.
antonjs

2
첫 번째 코드 예제는 여전히 잘못되어 있으며 일부 엔진에서는 Numbera 0로 시작하는 문자열을 사용 하는 것이 문제가됩니다 parseInt. 기수를 사용 하고 지정하십시오.
TJ Crowder

5
function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}

4

(ISO) 날짜를 Unix 타임 스탬프 로 변환하기 위해 필자는 필요한 시간보다 3 자 더 긴 타임 스탬프로 끝나서 올해 약 50k가되었습니다 ...

나는 그것을 1000까지 고안해야했습니다. new Date('2012-02-26').getTime() / 1000


3

다음 형식으로 읽을 수있는 타임 스탬프를 원하는 사람은 yyyymmddHHMMSS

> (new Date()).toISOString().replace(/[^\d]/g,'')              // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"

사용 예 : 백업 파일 확장자. /my/path/my.file.js.20190220


3

현재 타임 스탬프 를 찾으러 여기 온 경우

  var date      = new Date();
  var timestamp = date.getTime();

TLDR :

new Date().getTime();
//console.log(new Date().getTime());

2

문자열이 Date객체가 처리하도록 지정된 형식이 아닙니다 . 직접 구문 분석 하거나 MomentJS 와 같은 날짜 구문 분석 라이브러리 또는 DateJS 와 같은 이전 구문 분석 라이브러리를 사용 하거나 요청하기 전에 올바른 형식으로 마사지하십시오 (예 :)2012-02-29Date 구문 분석을 하기 .

당신이 얻는 이유 NaN: new Date(...)유효하지 않은 문자열을 처리 하도록 요청 Date하면 유효하지 않은 날짜로 설정된 객체를 new Date("29-02-2012").toString()반환 합니다 ( returns "Invalid date"). getTime()이 상태에서 날짜 객체를 호출 하면을 반환합니다 NaN.


@ benvds : 감사합니다. 비록 "또한 DOM에 대해 비파괴 적" 이라는 의견을 발견했지만 조금 이상합니다 ... 나는 그들이 의미하는 바는 Date객체를 변경하지 않는다는 것을 기대 합니다 (DOM과 관련이 없음).
TJ Crowder 2014 년

2
/**
 * Date to timestamp
 * @param  string template
 * @param  string date
 * @return string
 * @example         datetotime("d-m-Y", "26-02-2012") return 1330207200000
 */
function datetotime(template, date){
    date = date.split( template[1] );
    template = template.split( template[1] );
    date = date[ template.indexOf('m') ]
        + "/" + date[ template.indexOf('d') ]
        + "/" + date[ template.indexOf('Y') ];

    return (new Date(date).getTime());
}

0

다른 개발자가 답변을 제공했지만 내 방식으로 다음과 같이 사용자 정의 함수를 만들지 않고 즉시이 작업을 수행 할 수 있습니다.

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.