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().
이전 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();
