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.