【问题标题】:Convert a String to a Single Date in Javascript在 Javascript 中将字符串转换为单个日期
【发布时间】:2015-04-12 13:13:11
【问题描述】:

我有一个包含日期和时间组合的输入文本,并像这样显示

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";

    }

【问题讨论】:

标签: javascript html


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这是一个既可以解决这个问题又可以使开发更容易的答案。这个建议将需要一个额外的库来解决您现在遇到的此类问题,但您可能会发现它在使用 JavaScript 日期时很有用。看起来您正在编写手动日期函数。使用强大的库将它们抽象出来,以解决一次又一次出现的相同问题。使用date.js,这变得多么容易

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

    JSFiddle Example

    【讨论】:

      【解决方案3】:

      解析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

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 2017-04-28
        • 2011-02-27
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多