JavaScript에서 형식 지정을 사용하여 문자열을 날짜 / 시간으로 변환하려면 어떻게해야합니까?
형식 문자열을 지정하여 문자열을 자바 스크립트에서 날짜 시간 객체로 변환하려면 어떻게해야합니까?
나는 다음과 같은 것을 찾고있다 :
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
나는 이것이 당신을 도울 수 있다고 생각합니다 : http://www.mattkruse.com/javascript/date/
getDateFromFormat()
문제를 해결하기 위해 약간 조정할 수 있는 기능이 있습니다.
업데이트 : javascripttoolbox.com 에서 사용 가능한 샘플 버전이 업데이트되었습니다.
문자열이와 호환되는 경우 사용하십시오 . 형식이 호환되지 않는 경우 (정답이라고 생각하면) 문자열을 직접 구문 분석하고 연도, 월, 날짜,시, 분 및 초에 대한 명시 적 값으로 새 Date 객체 를 만들어야합니다 .new Date(dateString)
Date.parse()
문제를 해결하기 위해 정규식을 사용하는 @Christoph 언급. 내가 사용하는 것은 다음과 같습니다.
var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString);
var dateObject = new Date(
(+dateArray[1]),
(+dateArray[2])-1, // Careful, month starts at 0!
(+dateArray[3]),
(+dateArray[4]),
(+dateArray[5]),
(+dateArray[6])
);
결코 지능적이지 않습니다. 정규 표현식을 구성하고 new Date(blah)
필요에 맞게 설정하십시오.
편집 : 아마도 ES6에서 파괴를 사용하여 좀 더 이해할 수 있습니다.
let dateString = "2010-08-09 01:02:03"
, reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
, [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
, dateObject = new Date(year, month-1, day, hours, minutes, seconds);
하지만 요즘 모든 정직에서 나는 순간과 같은 것을 위해 도달합니다.
JavaScript에는 정교한 날짜 / 시간 형식 루틴이 없습니다.
Flagrant Badassery의 "JavaScript Date Format" 형식의 날짜 출력에는 외부 라이브러리를 사용해야합니다 .
입력 변환에 대해 몇 가지 제안이 이미 작성되었습니다. :)
Moment.js를 확인하십시오 . JavaScript의 비법적인 Date 함수 (또는 부족)를 구성하는 현대적이고 강력한 라이브러리입니다.
여기에 업데이트 된 답변을 보려면 http://www.datejs.com/에 좋은 js lib가 있습니다 .
Datejs는 구문 분석, 형식 지정 및 처리를위한 오픈 소스 JavaScript Date 라이브러리입니다.
var temp1 = "";
var temp2 = "";
var str1 = fd;
var str2 = td;
var dt1 = str1.substring(0,2);
var dt2 = str2.substring(0,2);
var mon1 = str1.substring(3,5);
var mon2 = str2.substring(3,5);
var yr1 = str1.substring(6,10);
var yr2 = str2.substring(6,10);
temp1 = mon1 + "/" + dt1 + "/" + yr1;
temp2 = mon2 + "/" + dt2 + "/" + yr2;
var cfd = Date.parse(temp1);
var ctd = Date.parse(temp2);
var date1 = new Date(cfd);
var date2 = new Date(ctd);
if(date1 > date2) {
alert("FROM DATE SHOULD BE MORE THAN TO DATE");
}
외부 라이브러리는 하나 또는 두 개의 날짜를 구문 분석하는 데 과잉이므로 Oli 와 Christoph의 솔루션을 사용하여 자체 기능을 만들었습니다 . 유럽 중부에서는 거의 모든 것을 사용하지 않고 OP의 형식을 사용하므로 여기에서 사용되는 간단한 앱에는 충분합니다.
function ParseDate(dateString) {
//dd.mm.yyyy, or dd.mm.yy
var dateArr = dateString.split(".");
if (dateArr.length == 1) {
return null; //wrong format
}
//parse time after the year - separated by space
var spacePos = dateArr[2].indexOf(" ");
if(spacePos > 1) {
var timeString = dateArr[2].substr(spacePos + 1);
var timeArr = timeString.split(":");
dateArr[2] = dateArr[2].substr(0, spacePos);
if (timeArr.length == 2) {
//minutes only
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
} else {
//including seconds
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
}
} else {
//gotcha at months - January is at 0, not 1 as one would expect
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
}
}
Date.parse()
상당히 지능적이지만 형식이 올바르게 구문 분석된다는 보장은 없습니다.
그렇지 않은 경우 두 가지를 연결할 무언가를 찾아야합니다. 귀하의 예는 매우 간단합니다 (순수) .REGEX (또는 심지어 string.split()
더 빠를 수도 있습니다)를 일부와 함께 터치 parseInt()
하면 신속하게 날짜를 지정할 수 있습니다.
time = "2017-01-18T17:02:09.000+05:30"
t = new Date(time)
hr = ("0" + t.getHours()).slice(-2);
min = ("0" + t.getMinutes()).slice(-2);
sec = ("0" + t.getSeconds()).slice(-2);
t.getFullYear()+"-"+t.getMonth()+1+"-"+t.getDate()+" "+hr+":"+min+":"+sec
Just to give my 5 cents.
My date format is dd.mm.yyyy (UK format) and none of the above examples were working for me. All the parsers were considering mm as day and dd as month.
I've found this library: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ and it worked, because you can say the order of the fields like this:
>>console.log(new Date(Date.fromString('09.05.2012', {order: 'DMY'})));
Wed May 09 2012 00:00:00 GMT+0300 (EEST)
I hope that helps someone.
Moment.js will handle this:
var momentDate = moment('23.11.2009 12:34:56', 'DD.MM.YYYY HH:mm:ss');
var date = momentDate.;
To fully satisfy the Date.parse convert string to format dd-mm-YYYY as specified in RFC822, if you use yyyy-mm-dd parse may do a mistakes.
//Here pdate is the string date time
var date1=GetDate(pdate);
function GetDate(a){
var dateString = a.substr(6);
var currentTime = new Date(parseInt(dateString ));
var month =("0"+ (currentTime.getMonth() + 1)).slice(-2);
var day =("0"+ currentTime.getDate()).slice(-2);
var year = currentTime.getFullYear();
var date = day + "/" + month + "/" + year;
return date;
}
'Programing' 카테고리의 다른 글
안드로이드 화면의 비디오 캡처 (0) | 2020.05.11 |
---|---|
단일 페이지 응용 프로그램 : 장단점 (0) | 2020.05.11 |
"for (… in…)"루프의 요소 순서 (0) | 2020.05.11 |
webpack으로 moment.js가 로캘을로드하지 못하게하는 방법은 무엇입니까? (0) | 2020.05.11 |
파이썬에서 모듈 전체 변수를 만드는 방법? (0) | 2020.05.11 |