날짜가 유효한지 확인합니다.
시나리오는 다음과 같습니다.
나는 있습니다String
날짜 및 날짜 형식이 다릅니다.예:
날짜: 2016-10-19
dateFormat: "DD-MM-YYYY".
저는 이 날짜가 유효한 날짜인지 확인해야 합니다.
저는 다음과 같은 것들을 시도했습니다.
var d = moment("2016-10-19",dateFormat);
d.isValid()
돌아오는 중false
매회Moment.js는 지정된 형식으로 날짜를 구문 분석하지 않습니까?
그런 다음 날짜 형식을 지정하려고 했습니다.DD-MM-YYYY
먼저 Moment.js에 전달합니다.
var d = moment("2016-10-19").format(dateFormat);
var date = moment(d, dateFormat);
지금이다date.isValid()
원하는 결과를 제공하지만 여기서 Moment.js 날짜 개체가 두 번 만들어집니다.어떻게 하면 피할 수 있을까요?더 좋은 해결책이 있습니까?
참고로 저는 변경할 수 없습니다.dateFormat
.
해결책을 찾을 수 있었습니다.제가 받는 날짜가 ISO 형식이기 때문에 dateFormat을 전달할 필요 없이 dateFormat만 제공하면 유효합니다.
var date = moment("2016-10-19");
그리고 나서.date.isValid()
원하는 결과를 제공합니다.
var date = moment('2016-10-19', 'DD-MM-YYYY', true);
호출할 때 세 번째 인수를 추가해야 합니다.moment
엄격한 구문 분석을 수행합니다.다음은 모멘트 문서 http://momentjs.com/docs/ #/moment/string-format/의 관련 부분입니다. 이 문서는 섹션의 끝에 있습니다.
방금 정말 엉망인 사건을 발견했습니다.
moment('Decimal128', 'YYYY-MM-DD').isValid() // true
날짜 및 날짜 형식이 다른 경우 Moment를 사용하여 문자열이 유효한 날짜인지 확인하는 방법
죄송합니다. 이 스레드에서 제공된 솔루션 중 실제로 질문에 답변한 솔루션이 있습니까?
String 날짜와 날짜 형식이 다릅니다.예: date: 2016-10-19 dateFormat: "DD-MM-YYYY" 이 날짜가 유효한지 확인해야 합니다.
다음은 저에게 도움이 됩니다.
const date = '2016-10-19';
const dateFormat = 'DD-MM-YYYY';
const toDateFormat = moment(new Date(date)).format(dateFormat);
moment(toDateFormat, dateFormat, true).isValid();
// Note I: `new Date()` circumvents the warning that
// Moment throws (https://momentjs.com/guides/#/warnings/js-date/),
// but may not be optimal.
// Note II: passing `true` as third argument to `moment()` enables strict-mode
// https://momentjs.com/guides/#/parsing/strict-mode/
하지만 솔직히, 왜 그런지 이해할 수 없습니다.moment.isDate()
(문서화된 대로) 개체만 허용합니다.제 생각에도 끈을 지지해야 합니다.
여기 있습니다.작업 피들
$(function(){
var dateFormat = 'DD-MM-YYYY';
alert(moment(moment("2012-10-19").format(dateFormat),dateFormat,true).isValid());
});
새로운 날짜와 함께 모멘트를 사용하여 다음의 사례를 처리합니다.undefined
데이터 값:
const date = moment(new Date("2016-10-19"));
이유:moment(undefined).isValid() == true
반면에 더 나은 방법은:moment(new Date(undefined)).isValid() == false
console.log(` moment('2019-09-01', 'YYYY-MM-DD').isValid()? ` +moment('2019-09-01', 'YYYY-MM-DD').isValid())
console.log(` moment('2019-22-01', 'YYYY-DD-MM').isValid()? ` +moment('2019-22-01', 'YYYY-DD-MM').isValid())
console.log(` moment('2019-22-22', 'YYYY-DD-MM').isValid()? ` +moment('2019-22-22', 'YYYY-DD-MM').isValid())
console.log(` moment('undefined', 'YYYY-DD-MM').isValid()? ` +moment('undefined', 'YYYY-DD-MM').isValid())
moment('2019-09-01', 'YYYY-MM-DD').isValid()? true
moment('2019-22-01', 'YYYY-DD-MM').isValid()? true
moment('2019-22-22', 'YYYY-DD-MM').isValid()? false
moment('undefined', 'YYYY-DD-MM').isValid()? false
제가 사용한 것은 moment.js입니다.
let value = '19-05-1994';
let check = moment(value,'DD-MM-YYYY', true).isValid();
console.log(check) //returns true
return check
날짜가 유효한 경우getTime()
항상 자신과 동등할 것입니다.
var date = new Date('2019-12-12');
if(date.getTime() - date.getTime() === 0) {
console.log('Date is valid');
} else {
console.log('Date is invalid');
}
사용할 수 있습니다.
var d = moment("2016-10-19",dateFormat);
if(!isNaN(d)) {
// d is a valid date.
}
moment("2022-10-18 04:00 AM", "YYYY-MM-DD HH:mm AM", true).isValid()
이거 드셔보세요.이것은 좋지 않지만 달력 보기의 입력이 일정한 형식이면 작동합니다.
이 예제의 선택기에서 오는 날짜가 잘못되었습니다.
https://jsfiddle.net/xs8tvox9/
var dateFormat = 'DD-MM-YYYY'
var badDate = "2016-10-19";
var splittedDate = badDate.split('-');
if (splittedDate.length == 3) {
var d = moment(splittedDate[2]+"-"+splittedDate[1]+"-"+splittedDate[0], dateFormat);
alert(d.isValid())
} else {
//incorrectFormat
}
언급URL : https://stackoverflow.com/questions/40123747/check-if-date-is-a-valid-one
'source' 카테고리의 다른 글
웹 서비스 API Keys 및 Ajax - 키 보호 (0) | 2023.07.25 |
---|---|
JavaScript의 KeyCode에서 문자 값 가져오기...그다음 다듬기 (0) | 2023.07.25 |
'root' 사용자에 대한 액세스가 거부되었습니다(암호 사용: 아니요). (0) | 2023.07.25 |
구성 요소 Vue 3에서 속성 렌더링 방법 (0) | 2023.07.20 |
Where 절 내의 if 문 (0) | 2023.07.20 |