JavaScript에서 DateTime 문자열 구문 분석


답변:


140

보다:

암호:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

mmm,하지만 strDate에 "30.30.2000"과 같은 잘못된 값이 있는지 확인하는 방법은 무엇입니까?
Dr. No

2
@ user674887, 구문 분석 후 값을 비교할 수 있습니다. 예 : dateParts [1] -1 == date.getMonth ()
Jonathan Fingland 2011-06-17

다음과 같이 날짜가 모두 TIME 인 경우 : "2014-05-20T16 : 43 : 56.71-06 : 00"var partesFecha = solicitud.CreatedDate.split ( "T") [0] .split ( "-"); var createdDate = new Date (partesFecha [0], (partesFecha [1]-1), partesFecha [2]); T 이전의 첫 추출 날짜와 나중에 분할 된 연도, 월, 일.
RolandoCC

당신이 자바 스크립트에서 예상 날짜 형식 얻을 수있는 분할을 사용할 필요가 믿을 수 없어
Claudiu Creanga

다른 사람은 Date 객체 자체에 대한 Mozilla 참조 기사가 말하는 것이 이상하다고 생각 "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."합니까?
NanoWizard

51

jQuery UI를 사용하는 경우 다음을 사용하여 모든 날짜 형식을 지정할 수 있습니다.

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/


21
+1 범위를 완전히 벗어난 것으로 보지는 않지만 JavaScript와 JQuery는 일반적인 조합입니다.
djna

답변은 OP에 태그가 지정되거나 언급되지 않은 라이브러리에 의존해서는 안됩니다. 3 줄 함수가 동일한 작업을 수행 할 수있을 때 jQuery 를 날짜 라이브러리로 사용 하는 것은 엄청난 과잉입니다.
RobG

9

이 코드를 사용하여 문자열이 유효한 날짜인지 확인합니다.

var dt = new Date(txtDate.value)
if (isNaN(dt))

주어진 형식에 필요한 형식과 일치하지 않는 developer.mozilla.org/en/Core_JavaScript_1.5_Reference/...을 (및 날짜 생성자는 충분하지 않습니다 따라서 있음)
조나단 Fingland에게

그것은 유효한 날짜를 전혀 테스트하지 않으며 Date 생성자가 입력에서 유효한 날짜를 만들 수 있는지 테스트합니다. 둘은 같은 것이 아닙니다.
RobG

6

참조 : http://momentjs.com/docs/#/parsing/string/

moment.js를 사용하는 경우 "string"+ "format"모드를 사용할 수 있습니다.

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

전의:

moment("12-25-1995", "MM-DD-YYYY");

2
대부분의 경우 MomentJS는 순수 JavaScript를 사용하면 수백 바이트 만 필요하고 MomentJS는 12.4kb gzip으로 압축되므로 과잉입니다. 개발자에게는 편리하지만 웹 사이트 속도가 느려집니다. 가치가 없습니다.
Raptor 2015

3

IE에서 다음 코드를 사용했습니다. (IE8 호환)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );


2

날짜 개체 사용 :

var time = Date.parse('02.02.1999');
document.writeln(time);

제공 : 917902800000


16
new Date(Date.parse('02.02.1999'))
Duke

+1 For Duke에 new Date(Date.parse('02.02.1999'))대한 Javascript 에 대한 댓글
Jack

현재 두 개 이상의 브라우저에서 NaN을 반환합니다. Date.parse가 잘못된 결과를 제공하는 이유는 무엇입니까?를
RobG

@ Duke— 일부 브라우저에서 잘못된 날짜 를 포함 new Date(Date.parse('02.02.1999'))하여 new Date('02.02.1999')와 동일한 결과를 생성 합니다. 내장 파서를 사용하는 것은 타임 스탬프를 파싱하는 최악의 방법입니다.
RobG

2

이 함수는 유효하지 않은 29.2.2001 날짜도 처리합니다.

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}

0

이 유형의 코드를 만드는 것만으로 날짜 형식을 지정할 수 있습니다.

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)

jquery 태그가 없기 때문에 jquery가 아닌 javascript를 사용해야합니다.
Sagar

행복 ... 의미는 단지 senario을 이해하는 것입니다
Bachas

잘. 나는 당신의 예가 Martin Staufcik이 제시 한 것과 다르지 않다고 생각합니다. 실제로 그의 대답에는 잘못된 날짜를 처리하는 추가 논리가 있습니다.
Sagar

Martin Staufcik은 일반적으로 발생하지 않는 조건을 처리합니다. 무효화를 줄 수있는 달력을 주실 수 있나요? 짧은 방식으로 처리 할 수 ​​있는데 왜 그렇게 긴 코드를 작성해야하나요? Martin Staufcik도 처리 할 시간과 함께 날짜를 처리하는 것이 훨씬 나을 것입니다.
Bachas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.