prosource

JavaScript 또는 jQuery를 사용하여 "dd/mm/yyyy" 또는 "dd-mm-yyyy" 형식의 날짜 문자열을 구문 분석하는 방법

probook 2023. 6. 17. 09:28
반응형

JavaScript 또는 jQuery를 사용하여 "dd/mm/yyyy" 또는 "dd-mm-yyyy" 형식의 날짜 문자열을 구문 분석하는 방법

중복 가능성:
DD/MM/YYYY(미국 이외의 형식 날짜)를 허용하도록 JavaScript의 Date.parse를 확장하시겠습니까?
dd-mm-yyyy 문자열을 날짜로 변환합니다.

텍스트 상자에 날짜를 입력했습니다(예: 05/09/1985). 05-Sep-1985(dd-MMM-yyyy) 형식으로 변환하려고 했습니다.어떻게 하면 이를 달성할 수 있을까요?소스 형식은 다음과 같을 수 있습니다.dd-mm-yyyy또는dd/mm/yyyy또는dd-mmm-yyyy서식을 정하다

코드 조각:

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val());
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

이 코드는 09-May-1985를 반환하지만 저는 05-Sep-1985를 원합니다.감사해요.

더 쉽게 조작할 수 있도록 네이티브 자바스크립트 날짜 객체를 감싸는 http://momentjs.com/ 과 같은 도우미 라이브러리를 사용할 수 있습니다.

그러면 다음과 같은 작업을 수행할 수 있습니다.

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

또는

var day = moment("25/12/1995", "DD/MM/YYYY");

그리고 나서 그 날짜에 수술합니다.

day.add('days', 7)

그리고 네이티브 자바스크립트 날짜를 얻기 위해.

day.toDate();

갱신하다

아래에서 말씀하신 내용:

죄송합니다. 이전에는 날짜 형식을 예측할 수 없습니다. dd-mm-yyyy 또는 dd/mm/yyyyy 또는 dd-mmm-yyyy 형식이어야 합니다. 마지막으로 이 형식을 모두 dd-MMM-yyyyy 형식으로 변환하려고 했습니다.

그것은 질문을 완전히 바꿉니다.포맷을 제어할 수 없다면 훨씬 더 복잡해질 것입니다.JavaScript에는 날짜 형식을 지정할 수 있는 기능이 없습니다.공식적으로 자바스크립트가 지원하는 유일한 날짜 형식은 ISO-8601의 단순화된 버전입니다.yyyy-mm-dd실제로 거의 모든 브라우저가 지원하기는 하지만yyyy/mm/dd뿐만 아니라.하지만 그 외에는 코드를 직접 작성하거나 좋은 라이브러리를 사용해야 합니다.저는 아마도 moment.js나 DateJS 같은 라이브러리를 사용할 것입니다(DateJS는 몇 년 동안 유지되지 않았지만).


원답:

형식이 항상 다음인 경우 dd/mm/yyyy그러면 이것은 사소한 것입니다.

var parts = str.split("/");
var dt = new Date(parseInt(parts[2], 10),
                  parseInt(parts[1], 10) - 1,
                  parseInt(parts[0], 10));

split지정된 구분 기호에서 문자열을 분할합니다.그러면 우리는parseInt문자열을 숫자로 변환하고, 우리는 사용합니다.new Date건설자를 위한 건설자Date다음 부분에서:세 번째 부분은 연도, 두 번째 부분은 달, 그리고 첫 번째 부분은 날이 될 것입니다. Date0을 기반으로 한 월 수를 사용하므로 월 수에서 1을 빼야 합니다.

Date.parse 에서는 특정 형식만 인식하고 입력 형식을 알려주는 옵션이 없습니다.이 경우 입력이 다음 형식으로 되어 있다고 생각합니다.mm/dd/yyyy그래서 결과가 틀렸습니다.

이 문제를 해결하려면 직접 입력을 구문 분석한 다음(예: ) 수동으로 구성해야 합니다.Date개체를 사용하거나 datejs와 같은 보다 완전한 라이브러리를 사용합니다.

수동 구문 분석 예제:

var input = $('#' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));

date.js를 사용한 예:

var input = $('#' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");

사용해 보십시오.

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val().toString().replace(/([0-9]+)\/([0-9]+)/,'$2/$1'));
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

RegExp는 다음과 ..replace(/([0-9]+)\/([0-9]+)/,'$2/$1')일/월 위치를 변경합니다.

다음을 참조하십시오. http://blog.stevenlevithan.com/archives/date-time-format

당신은 데이트로 무엇이든 할 수 있습니다.

파일: http://stevenlevithan.com/assets/misc/date.format.js

스크립트 태그를 사용하여 HTML 코드에 추가하고 다음과 같이 사용할 수 있습니다.

var now = new Date();

now.format("m/dd/yy");
// Returns, e.g., 6/09/07

언급URL : https://stackoverflow.com/questions/10430321/how-to-parse-a-dd-mm-yyyy-or-dd-mm-yyyy-or-dd-mmm-yyyy-formatted-date-stri

반응형