在Javascript中将字符串转换为单个日期

时间:2015-04-12 13:13:11

标签: javascript html

我有一个输入文本,其中包含日期和时间的组合,并显示如下

04/01/2015 8:48PM 

如何在javascript中使用 new Date()函数将此字符串转换为日期?显示不输出

这是我到目前为止所尝试的,我只能转换日期而不是时间。 HTML

 <form name="frm1" >


      <h3>Check in Date:</h3>
      <input type="text" value="" class="datetimepicker_mask" name="dtp1" /><br><br>

      <h3>Check out Date:</h3>
      <input type="text" value="" class="datetimepicker_mask" name="dtp2" /><br><br>

      <input type="button" onclick="computeDate()" value="Compute Difference" /> 

      <br><b>No of days: </b>
      <span id="date_difference"></span>

     </form>

JAVSCRIPT

function computeDate() {

        var dateTime1 = document.frm1.dtp1.value;
        var dateTime2 = document.frm1.dtp2.value;


        var startDate = new Date(dateTime1);
        var endDate = new Date(dateTime2);




        var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());

        if (timeDiff == 0) {
            timeDiff = 1;
        }

        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 

        var total = parseFloat(diffDays) * parseFloat(roomRate);

        document.getElementById("date_difference").innerHTML = diffDays;
        document.getElementById("date_difference").style.visibility = "visible";

    }

3 个答案:

答案 0 :(得分:1)

如果日期格式始终相同,请创建一个将日期转换为Date对象的convience函数

function convert(date) {
    var dateArr = date.split(/[\s\/\:]/);

    if (dateArr[4].toLowerCase().indexOf('pm') != -1) 
        dateArr[3] = (+dateArr[3]) + 12;

    dateArr[4] = dateArr[4].replace(/\D/g,'');
    dateArr[0]--;

    return new Date(dateArr[2], dateArr[0], dateArr[1], dateArr[3], dateArr[4]);
}

FIDDLE

答案 1 :(得分:0)

这是一个可以解决这个问题并使开发更容易的答案。这个建议将需要一个额外的库来解决您在这里遇到的问题,但是在使用JavaScript日期时,您可能会发现它很有用。看起来你已经开始编写手动日期功能了。用强大的库来抽象它们来解决这些一再出现的相同问题。使用date.js,这就变得容易了

Date.parse('04/01/2015 8:48PM ')

JSFiddle Example

答案 2 :(得分:0)

您可以在解析dateString

后创建Date对象
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

您可以使用parseDate函数,如下所示

var testDate = "04/01/2015 8:48PM";
console.log(parseDate(testDate));

function parseDate(dateStr){
    var dateTime = dateStr.split(/\/| |:|(?=[PA])/);

    for(var i=0; i<5; i++){
        dateTime[i] = parseInt(dateTime[i]);
    }
    if(dateTime[5] == "PM"){
        dateTime[3] += 12;
    }

    return new Date(dateTime[2], dateTime[1], dateTime[0], dateTime[3], dateTime[4]);
}

Try it at JSFiddle