programing

JavaScript의 날짜로 문자열 구문 분석

firstcheck 2022. 11. 7. 21:39
반응형

JavaScript의 날짜로 문자열 구문 분석

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

var st = "date in some format"
var dt = new Date();
JavaScript의 날짜로 문자열 구문 분석
var dt_st = // st in Date format, same as dt.

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

ISO 식 iso :YYYY-MM-DD ★★★★★★★★★★★★★★★★★」YYYY-MM-DDTHH:MM:SS.

하지만 기다려!「ISO 형식」을 사용하는 것만으로, 신뢰성 있는 동작은 아닙니다.문자열은 UTC로 해석될 수도 있고 로컬 시간으로 해석될 수도 있습니다(브라우저 벤더와 버전에 따라 다름).항상 날짜를 UTC로 저장하고 UTC로 계산하는 것이 가장 좋습니다.

날짜를 UTC로 해석하려면 다음과 같이 Z를 추가합니다. new Date('2011-04-11T10:20:30Z').

UTC로 하려면 , 「UTC」를 합니다..toUTCString() ,
하려면 , 「 」를 사용합니다..toString().

MDN | 날짜 및 이 답변에 대한 자세한 내용.

이전 Internet Explorer 호환성(9 이전 버전에서는 날짜 생성자의 ISO 형식을 지원하지 않음)의 경우 날짜 문자열 표현을 해당 부분으로 분할한 다음 날짜/시간 부분을 사용하여 다음과 같이 생성자를 사용할 수 있습니다. 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","-")

권장 사항:시간대 및 포맷 시간 관리는 정말 큰 문제이기 때문에 포맷이 많은 날짜에는 패키지를 사용하는 것이 좋습니다.간단한 문자열부터 지금까지의 날짜까지 쉽게 해석할 수 있지만, 날짜의 모든 형식과 변형을 지원하는 것은 어려운 일이라고 생각합니다.

업데이트: 현재 모멘트는 이상 사용되지 않습니다.대안은 datefns https://date-fns.org/ 입니다.


moment.http://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/ #/context/string-format/을 참조해 주세요.

Date()에 인수로서 전달합니다.

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

는 '', '다', '다', '다', '다'와 사용할 수 .dt.getMonth().

멋진 럭슨 라이브러리를 사용할 수 있다면 다음과 같은 방법으로 날짜를 쉽게 해석할 수 있습니다.

var luxonDate = DateTime.fromISO("2014-09-15T09:00:00");

JS 날짜 오브젝트에 액세스 할 수 있습니다.

luxonDate().toJSDate();

오래된 답변은 Moment를 사용하였습니다.JS

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

작고 스마트한 솔루션을 찾고 계신 고객님께는 다음과 같습니다.

String.prototype.toDate = function(format)
{
  var normalized      = this.replace(/[^a-zA-Z0-9]/g, '-');
  var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
  var formatItems     = normalizedFormat.split('-');
  var dateItems       = normalized.split('-');

  var monthIndex  = formatItems.indexOf("mm");
  var dayIndex    = formatItems.indexOf("dd");
  var yearIndex   = formatItems.indexOf("yyyy");
  var hourIndex     = formatItems.indexOf("hh");
  var minutesIndex  = formatItems.indexOf("ii");
  var secondsIndex  = formatItems.indexOf("ss");

  var today = new Date();

  var year  = yearIndex>-1  ? dateItems[yearIndex]    : today.getFullYear();
  var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1;
  var day   = dayIndex>-1   ? dateItems[dayIndex]     : today.getDate();

  var hour    = hourIndex>-1      ? dateItems[hourIndex]    : today.getHours();
  var minute  = minutesIndex>-1   ? dateItems[minutesIndex] : today.getMinutes();
  var second  = secondsIndex>-1   ? dateItems[secondsIndex] : today.getSeconds();

  return new Date(year,month,day,hour,minute,second);
};

예:

"22/03/2016 14:03:01".toDate("dd/mm/yyyy hh:ii:ss");
"2016-03-29 18:30:00".toDate("yyyy-mm-dd hh:ii:ss");

★★★★★★★★★★★★★★★★★.new Date(st);

그게 적절한 형식이라고 가정하면.

new Date(2000, 10, 1)수 00 GMT됩니다.

0은 1월을 나타냅니다.

"dd/MM/yyy" 형식에서 변환하는 경우.다음은 예를 제시하겠습니다.

var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var arrayDate = stringDate.match(pattern);
var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);

이 솔루션은 9보다 이전 버전의 IE에서 작동합니다.

타임스탬프는 숫자에 캐스트해야 합니다.

var ts = '1471793029764';
ts = Number(ts); // cast it to a Number
var date = new Date(ts); // works

var invalidDate = new Date('1471793029764'); // does not work. Invalid Date

Date.parse원하는 걸 거의 얻을 수 있어이 목구멍을 막다am/pm부분적인 부분이지만, 약간의 해킹을 통해 작동시킬 수 있습니다.

var str = 'Sun Apr 25, 2010 3:30pm',
    timestamp;

timestamp = Date.parse(str.replace(/[ap]m$/i, ''));

if(str.match(/pm$/i) >= 0) {
    timestamp += 12 * 60 * 60 * 1000;
}

이것이 제가 보기에 가장 간단하고 최고의 솔루션입니다.

마지막으로 날짜 문자열(ISO 형식 사용)을 "T00:00:00"에 연결하고 아래 예시와 같이 JavaScript Date() 컨스트럭터를 사용하십시오.

const dateString = '2014-04-03'
var mydate = new Date(dateString + "T00:00:00");
console.log(mydate.toDateString());

상기 솔루션에 대한 자세한 내용은 다음과 같습니다(단, 옵션 참조).

ISO 형식에서 시간을 지정하고 문자열 끝에 Z가 없는 경우 날짜는 UTC 시간대가 아닌 로컬 시간대가 됩니다., 이 방법으로 날짜를 설정할 때 시간대를 지정하지 않고 JavaScript는 로컬브라우저의 시간대를 사용합니다.또한 날짜를 가져올 때 시간대를 지정하지 않고 브라우저의 시간대로도 변환됩니다.타임 존으로 변환됩니다.또한 기본적으로는 JavaScript의 거의 모든 날짜 방식(1개 제외)에서 로컬 시간대 날짜/시간도 제공됩니다(UTC를 지정한 경우에만 UTC가 표시됩니다).따라서 로컬/브라우저 시간대를 사용하면 로컬/브라우저 시간대와 UTC 시간대가 다르므로 원치 않는 결과가 나타나지 않을 수 있습니다.이는 날짜 문자열 변환의 주요 불만 사항 중 하나입니다.그러나 이 솔루션을 사용할 경우 자신의 상황을 이해하고 자신이 무엇을 하고 있는지 인식해야 합니다.또한 날짜 시간 문자열에서 T 또는 Z를 생략하면 브라우저마다 결과가 다를 수 있습니다.

위의 예에서도 아래의 예와 완전히 같은 답변을 얻을 수 있습니다.이것은 이 질문에서 두 번째로 많은 표를 얻은 답변입니다.

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());

여기서 설명하는 첫 번째 예는 두 번째 예보다 더 단순하고 오류 방지 기능이 뛰어나다는 것이 주된 차이점이다(적어도 제 견해로는 아래 설명과 같습니다).

ISO 형식의 date-string 인수(첫 번째 예)를 하나만 사용하여 JavaScript Date() 컨스트럭터 날짜를 호출하면 논리 제한을 초과하는 값을 받아들이지 않기 때문입니다(따라서 13을 월로 지정하거나 32를 일로 지정하면 Invalid Date가 됩니다).

그러나 동일한 생성자를 여러 날짜 인수와 함께 사용할 경우(두 번째 예), 논리 제한을 초과하는 파라미터는 인접 값으로 조정되어 Invalid Date Error가 표시되지 않습니다(따라서 13을 월로 지정하면 Invalid Date가 아닌 1로 조정됩니다).

또는 대체 솔루션(및 세 번째 솔루션)은 둘 다 혼재시키는 것입니다.첫 번째 예를 사용하여 날짜 스트링을 검증하고 유효한 경우 두 번째 예를 사용합니다(그러면 첫 번째 예의 브라우저 불일치를 방지하고 두 번째 예의 논리 제한을 초과하는 파라미터의 허용을 피할 수 있습니다).

이와 같이 (일부 날짜도 허용):

function covertStringToDate(dateString) {
    //dateString should be in ISO format: "yyyy-mm-dd", "yyyy-mm" or "yyyy"
    if(new Date(dateString).toString() === "Invalid Date") {
        return false
    } else {
        const onlyNumbers = dateString.replace(/\D/g, ""); 
        const year = onlyNumbers.slice(0,4) 
        const month = onlyNumbers.slice(4,6)
        const day = onlyNumbers.slice(6,8)
        if(!month){
            return(new Date(year))
        } else if (!day) {
            return(new Date(year, month - 1))
        } else {
            return(new Date(year, month - 1, day))
        }        
    }
}

그리고 네 번째 대안(그리고 마지막 제안)은 적절한 세 번째 라이브러리(순간 또는 날짜 fns )를 사용하는 것입니다.

참고 자료:

성능

오늘(2020.05.08) 선택한 솔루션에 대해 테스트를 수행합니다. 입력 날짜는 ISO8601 문자열(Ad,Bd,Cd,Dd,Ed)이고 입력 날짜는 타임스탬프(At,Ct,Dt)입니다.솔루션 Bd, Cd, Ct는 결과로서 js Date 객체를 반환하지 않지만, 유용하게 사용할 수 있기 때문에 추가하지만 유효한 솔루션과 비교하지는 않습니다.이 결과는 대규모 날짜 파싱에 유용합니다.

결론들

  • 솔루션new Date(Ad)는 모든 브라우저의 ISO 날짜 및 타임스탬프에 대해 moment.js(Dd)보다 50~100배 빠릅니다.
  • 솔루션new Date(Ad)는 10배 이상 고속입니다.parseDate(편집)
  • 솔루션Date.parse(Bd)는 모든 브라우저에서 ISO 날짜로부터 타임스탬프를 취득할 필요가 있는 경우에 가장 빠릅니다.

여기에 이미지 설명 입력

세부 사항

Chrome 81.0, Safari 13.1, Firefox 75.0, MacOs High Sierra 10.13.6월 6일 ★★★parseDate(Ed)new Date(0)UTC ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」

let ds = '2020-05-14T00:00Z'; // Valid ISO8601 UTC date
let ts = +'1589328000000';    // timestamp

let Ad = new Date(ds);
let Bd = Date.parse(ds);
let Cd = moment(ds);
let Dd = moment(ds).toDate();
let Ed = parseDate(ds);

let At = new Date(ts);
let Ct = moment(ts);
let Dt = moment(ts).toDate();

log = (n,d) => console.log(`${n}: ${+d} ${d}`);

console.log('from date string:', ds)
log('Ad', Ad);
log('Bd', Bd);
log('Cd', Cd);
log('Dd', Dd);
log('Ed', Ed);
console.log('from timestamp:', ts)
log('At', At);
log('Ct', Ct);
log('Dt', Dt);



function parseDate(dateStr) {
  let [year,month,day] = dateStr.split(' ')[0].split('-');
  let d=new Date(0);
  d.setUTCFullYear(year);
  d.setUTCMonth(month-1);
  d.setUTCDate(day)
  return d;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment-with-locales.min.js"></script>

This snippet only presents used soultions  

크롬 결과

여기에 이미지 설명 입력

pt-BR 형식으로 변환:

    var dateString = "13/10/2014";
    var dataSplit = dateString.split('/');
    var dateConverted;

    if (dataSplit[2].split(" ").length > 1) {

        var hora = dataSplit[2].split(" ")[1].split(':');
        dataSplit[2] = dataSplit[2].split(" ")[0];
        dateConverted = new Date(dataSplit[2], dataSplit[1]-1, dataSplit[0], hora[0], hora[1]);

    } else {
        dateConverted = new Date(dataSplit[2], dataSplit[1] - 1, dataSplit[0]);
    }

누구 좀 도와주세요!!!

이를 위해 바이올린을 만들었습니다.어떤 날짜 문자열에서도 toDate() 함수를 사용하여 날짜 형식을 지정할 수 있습니다.날짜 개체가 반환됩니다.https://jsfiddle.net/Sushil231088/q56yd0rp/

"17/9/2014".toDate("dd/MM/yyyy", "/")

는 js를 합니다.http://momentjs.com/

moment().format('MMMM Do YYYY, h:mm:ss a'); // August 16th 2015, 4:17:24 pm
moment().format('dddd');                    // Sunday
moment().format("MMM Do YY");               // Aug 16th 15
moment().format('YYYY [escaped] YYYY');     // 2015 escaped 2015
moment("20111031", "YYYYMMDD").fromNow(); // 4 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 16 hours ago
moment().endOf('day').fromNow();          // in 8 hours

Date 객체를 UTC Date 객체로 변환하기 위해 이 기능을 만들었습니다.

function dateToUTC(date) {
    return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
}


dateToUTC(new Date());

다음 작업을 수행할 수 있습니다.

function formatDate(userDOB) {
  const dob = new Date(userDOB);

  const monthNames = [
    'January', 'February', 'March', 'April', 'May', 'June', 'July',
     'August', 'September', 'October', 'November', 'December'
  ];

  const day = dob.getDate();
  const monthIndex = dob.getMonth();
  const year = dob.getFullYear();

  // return day + ' ' + monthNames[monthIndex] + ' ' + year;
  return `${day} ${monthNames[monthIndex]} ${year}`;
}

console.log(formatDate('1982-08-10'));

이 답변은 카셈의 답변에 기초하고 있지만 두 자리 숫자도 다루고 있다.Kassem의 답변에 대한 수정안을 제출했습니다만, 승인되지 않은 경우, 이것도 별도 답변으로 제출합니다.

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 year = parseInt(dateItems[yearIndex]); 
        // adjust for 2 digit year
        if (year < 100) { year += 2000; }
        var month=parseInt(dateItems[monthIndex]);
        month-=1;
        var formatedDate = new Date(year,month,dateItems[dayIndex]);
        return formatedDate;
}

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

또 다른 방법:

String.prototype.toDate = function(format) {
    format = format || "dmy";
    var separator = this.match(/[^0-9]/)[0];
    var components = this.split(separator);
    var day, month, year;
    for (var key in format) {
        var fmt_value = format[key];
        var value = components[key];
        switch (fmt_value) {
            case "d":
                day = parseInt(value);
                break;
            case "m":
                month = parseInt(value)-1;
                break;
            case "y":
                year = parseInt(value);
        }
    }
    return new Date(year, month, day);
};
a = "3/2/2017";
console.log(a.toDate("dmy"));
// Date 2017-02-03T00:00:00.000Z
var date = new Date(year, month, day);

또는

var date = new Date('01/01/1970');

'01-01-1970' 형식의 날짜 문자열은 FireFox에서 작동하지 않으므로 날짜 형식 문자열에 "-" 대신 "/"를 사용하는 것이 좋습니다.

날짜 형식으로 변환하기 전에 문자열 내용을 확인해야 하는 경우:

// Convert 'M/D/YY' to Date()
mdyToDate = function(mdy) {
  var d = mdy.split(/[\/\-\.]/, 3);

  if (d.length != 3) return null;

  // Check if date is valid
  var mon = parseInt(d[0]), 
      day = parseInt(d[1]),
      year= parseInt(d[2]);
  if (d[2].length == 2) year += 2000;
  if (day <= 31 && mon <= 12 && year >= 2015)
    return new Date(year, mon - 1, day);

  return null; 
}

문자열을 최신 개체로 변환하는 parseDateTime 함수를 만들었습니다.이 함수는 모든 브라우저(IE 브라우저 포함)에서 작동합니다.필요한 경우 https://github.com/Umesh-Markande/Parse-String-to-Date-in-all-browser를 참조하십시오.

    function parseDateTime(datetime) {
            var monthNames = [
                "January", "February", "March",
                "April", "May", "June", "July",
                "August", "September", "October",
                "November", "December"
              ];
            if(datetime.split(' ').length == 3){
                var date = datetime.split(' ')[0];
                var time = datetime.split(' ')[1].replace('.00','');
                var timearray = time.split(':');
                var hours = parseInt(time.split(':')[0]);
                var format = datetime.split(' ')[2];
                var bits = date.split(/\D/);
                date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
                var day = date.getDate();
                var monthIndex = date.getMonth();
                var year = date.getFullYear();
                if ((format === 'PM' || format === 'pm') && hours !== 12) {
                    hours += 12;
                    try{  time = hours+':'+timearray[1]+':'+timearray[2] }catch(e){ time = hours+':'+timearray[1] }
                } 
                var formateddatetime = new Date(monthNames[monthIndex] + ' ' + day + '  ' + year + ' ' + time);
                return formateddatetime;
            }else if(datetime.split(' ').length == 2){
                var date = datetime.split(' ')[0];
                var time = datetime.split(' ')[1];
                var bits = date.split(/\D/);
                var datetimevalue = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
                var day = datetimevalue.getDate();
                var monthIndex = datetimevalue.getMonth();
                var year = datetimevalue.getFullYear();
                var formateddatetime = new Date(monthNames[monthIndex] + ' ' + day + '  ' + year + ' ' + time);
                return formateddatetime;
            }else if(datetime != ''){
                var bits = datetime.split(/\D/);
                var date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
                return date;
            }
            return datetime;
        }

    var date1 = '2018-05-14 05:04:22 AM';   // yyyy-mm-dd hh:mm:ss A
    var date2 = '2018/05/14 05:04:22 AM';   // yyyy/mm/dd hh:mm:ss A
    var date3 = '2018/05/04';   // yyyy/mm/dd
    var date4 = '2018-05-04';   // yyyy-mm-dd
    var date5 = '2018-05-14 15:04:22';   // yyyy-mm-dd HH:mm:ss
    var date6 = '2018/05/14 14:04:22';   // yyyy/mm/dd HH:mm:ss

    console.log(parseDateTime(date1))
    console.log(parseDateTime(date2))
    console.log(parseDateTime(date3))
    console.log(parseDateTime(date4))
    console.log(parseDateTime(date5))
    console.log(parseDateTime(date6))

**Output---**
Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time)
Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time)
Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time)
Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time)
Mon May 14 2018 15:04:22 GMT+0530 (India Standard Time)
Mon May 14 2018 14:04:22 GMT+0530 (India Standard Time)

regex를 사용하여 문자열을 해석하여 시간을 자세히 표시한 후 날짜 또는 다음과 같은 반환 형식을 만들 수 있습니다.

//example : let dateString = "2018-08-17 01:02:03.4"

function strToDate(dateString){
    let reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d{1})/
  , [,year, month, day, hours, minutes, seconds, miliseconds] = reggie.exec(dateString)
  , dateObject = new Date(year, month-1, day, hours, minutes, seconds, miliseconds);
  return dateObject;
}
alert(strToDate(dateString));

, '를 '데이트'로 만들 수 .new Date()ToLocaleDateString() 함수로 포맷합니다.

예:

console.log(new Date('1970-01-01').toLocaleDateString('es-ES')) // --> This will output '1/1/1970'

ISO 8601-esque 데이터 링은 표준이 뛰어나지만 여전히 널리 지원되지 않습니다.

다음 리소스는 어떤 데이터스트링 형식을 사용해야 하는지 알아내는 데 유용합니다.

http://dygraphs.com/date-formats.html

네. 즉, 데이터 스트링이 다음과 같이 단순할 수 있습니다.

"2014/10/13 23:57:52""2014-10-13 23:57:52"

                //little bit of code for Converting dates 

                var dat1 = document.getElementById('inputDate').value;
                var date1 = new Date(dat1)//converts string to date object
                alert(date1);
                var dat2 = document.getElementById('inputFinishDate').value;
                var date2 = new Date(dat2)
                alert(date2);

다음 코드 사용: (내 문제는 이 코드로 해결되었습니다)

function dateDiff(date1, date2){
var diff = {}                           // Initialisation du retour
var tmp = date2 - date1;

tmp = Math.floor(tmp/1000);             // Nombre de secondes entre les 2 dates
diff.sec = tmp % 60;                    // Extraction du nombre de secondes

tmp = Math.floor((tmp-diff.sec)/60);    // Nombre de minutes (partie entière)
diff.min = tmp % 60;                    // Extraction du nombre de minutes

tmp = Math.floor((tmp-diff.min)/60);    // Nombre d'heures (entières)
diff.hour = tmp % 24;                   // Extraction du nombre d'heures

tmp = Math.floor((tmp-diff.hour)/24);   // Nombre de jours restants
diff.day = tmp;

return diff;

}

언급URL : https://stackoverflow.com/questions/5619202/parsing-a-string-to-a-date-in-javascript

반응형