[javascript] JavaScript에서 문자열을 날짜로 변환

JavaScript에서 문자열을 날짜로 변환하려면 어떻게해야합니까?

var st = "date in some format"
var dt = new date();

var dt_st= //st in date format same as dt



답변

문자열 구문 분석에 가장 적합한 문자열 형식은 JavaScript Date 객체 생성자와 함께 날짜 ISO 형식입니다.

ISO 형식의 예 : YYYY-MM-DD또는 YYYY-MM-DDTHH:MM:SS.

하지만 기다려! “ISO 형식”을 사용하는 것만으로는 안정적으로 작동하지 않습니다. 문자열은 때때로 UTC로, 때로는 현지 시간으로 (브라우저 공급 업체 및 버전에 따라) 구문 분석됩니다. 모범 사례는 항상 날짜를 UTC로 저장하고 계산을 UTC로하는 것입니다.

UTC로 날짜를 구문 분석하려면 추가 Z – 예를 : new Date('2011-04-11T10:20:30Z').

UTC, 사용 날짜를 표시하려면 .toUTCString(),
사용을 사용자의 로컬 시간에 날짜를 표시 .toString().

MDN에 대한 추가 정보 | 날짜이 대답 .

이전 Internet Explorer 호환성 (9 미만의 IE 버전은 Date 생성자에서 ISO 형식을 지원하지 않음)의 경우 datetime 문자열 표현을 해당 부분으로 분할 한 다음 datetime 부분을 사용하여 생성자를 사용할 수 있습니다 (예 🙂 new Date('2011', '04' - 1, '11', '11', '51', '00'). 월 수는 1보다 작아야합니다.


다른 방법-적절한 라이브러리를 사용하십시오.

지정된 시간대로 날짜를 구문 분석 할 수있는 Moment.js 라이브러리를 활용할 수도 있습니다 .


답변

불행히도 나는

var mydate = new Date('2014-04-03');
console.log(mydate.toDateString());

“2014 년 4 월 2 일 수요일”을 반환합니다. 나는 그것이 미친 것처럼 들리지만 일부 사용자에게는 발생합니다.

방탄 솔루션은 다음과 같다 :

var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
console.log(mydate.toDateString());


답변

var st = "26.04.2013";
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var dt = new Date(st.replace(pattern,'$3-$2-$1'));

출력은 다음과 같습니다.

dt => Date {Fri Apr 26 2013}


답변

function stringToDate(_date,_format,_delimiter)
{
            var formatLowerCase=_format.toLowerCase();
            var formatItems=formatLowerCase.split(_delimiter);
            var dateItems=_date.split(_delimiter);
            var monthIndex=formatItems.indexOf("mm");
            var dayIndex=formatItems.indexOf("dd");
            var yearIndex=formatItems.indexOf("yyyy");
            var month=parseInt(dateItems[monthIndex]);
            month-=1;
            var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]);
            return formatedDate;
}

stringToDate("17/9/2014","dd/MM/yyyy","/");
stringToDate("9/17/2014","mm/dd/yyyy","/")
stringToDate("9-17-2014","mm-dd-yyyy","-")


답변

moment.js ( http://momentjs.com/ )는 사용 날짜를위한 완전하고 좋은 패키지이며 ISO 8601 문자열을 지원합니다 .

문자열 날짜와 형식을 추가 할 수 있습니다.

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

날짜가 유효한지 확인할 수 있습니다.

moment("not a real date").isValid(); //Returns false

일부 표시 예

let dt = moment("02-01-2019", "MM-DD-YYYY");
console.log(dt.fromNow()+' |'+dt.format('LL'))
// output: "3 months ago | February 1, 2019"

http://momentjs.com/docs/#/parsing/string-format/ 설명서를 참조
하십시오

권장 사항 : 시간대 및 형식 시간 관리가 실제로 큰 문제이기 때문에 순간 js가 많은 형식을 해결하기 때문에 많은 형식을 포함하는 날짜에 패키지를 사용하는 것이 좋습니다. 간단한 문자열에서 날짜까지 쉽게 구문 분석 할 수는 있지만 모든 형식과 날짜 변형을 지원하는 것은 어려운 일이라고 생각합니다.


답변

Date ()에 인수로 전달하십시오.

var st = "date in some format"
var dt = new Date(st);

다음을 사용하여 날짜, 월, 연도에 액세스 할 수 있습니다 dt.getMonth().


답변

훌륭한 모멘트 라이브러리 (예 : Node.js 프로젝트)를 사용할 수 있다면 예를 들어 날짜를 쉽게 파싱 할 수 있습니다.

var momentDate = moment("2014-09-15 09:00:00");

를 통해 JS 날짜 객체에 액세스 할 수 있습니다

momentDate ().toDate();