[javascript] dd-mm-yyyy 문자열을 날짜로 변환

다음을 사용하여 dd-mm-yyyy 형식의 문자열을 JavaScript의 날짜 객체로 변환하려고합니다.

 var from = $("#datepicker").val();
 var to = $("#datepickertwo").val();
 var f = new Date(from);
 var t = new Date(to);

("#datepicker").val()dd-mm-yyyy 형식의 날짜를 포함합니다. 다음을 수행하면 “잘못된 날짜”가 표시됩니다.

alert(f);

‘-‘기호 때문입니까? 이걸 어떻게 극복 할 수 있습니까?



답변

“-“로 분할

문자열을 필요한 부분으로 구문 분석하십시오.

var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])

정규식 사용

var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))

왜 정규식을 사용하지 않습니까?

하이픈으로 구분 된 세 부분으로 구성된 문자열을 작업한다는 것을 알고 있기 때문입니다.

그러나 다른 문자열 내에서 동일한 문자열을 찾고 있다면 정규식을 사용하는 것이 좋습니다.

재사용

샘플 코드에서 또는 코드베이스의 다른 곳에서이 작업을 두 번 이상 수행하므로 함수로 묶으십시오.

function toDate(dateStr) {
  var parts = dateStr.split("-")
  return new Date(parts[2], parts[1] - 1, parts[0])
}

다음과 같이 사용 :

var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)

또는 함수에서 jQuery를 신경 쓰지 않으면 :

function toDate(selector) {
  var from = $(selector).val().split("-")
  return new Date(from[2], from[1] - 1, from[0])
}

다음과 같이 사용 :

var f = toDate("#datepicker")
var t = toDate("#datepickertwo")

현대 JavaScript

좀 더 현대적인 JS를 사용할 수 있다면 배열 파괴는 좋은 터치입니다.

const toDate = (dateStr) => {
  const [day, month, year] = dateStr.split("-")
  return new Date(year, month - 1, day)
}


답변

정규식 예 :

new Date( "13-01-2011".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );


답변

또 다른 가능성 :

var from = "10-11-2011";
var numbers = from.match(/\d+/g);
var date = new Date(numbers[2], numbers[0]-1, numbers[1]);

숫자를 일치시키고 순서를 바꿉니다


답변

moment.js 예제 사용 :

var from = '11-04-2017' // OR $("#datepicker").val();
var milliseconds = moment(from, "DD-MM-YYYY").format('x');
var f = new Date(milliseconds)


답변

var from = $("#datepicker").val();
var f = $.datepicker.parseDate("d-m-Y", from);


답변

Date()다음과 같이 객체 의 괄호 안에 날짜를 쓸 수도 있습니다 .

new Date("Month dd, yyyy hh:mm:ss")
new Date("Month dd, yyyy")
new Date(yyyy,mm,dd,hh,mm,ss)
new Date(yyyy,mm,dd)
new Date(milliseconds)


답변

이 형식을 사용하십시오. myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00