我有一个输入文本,其中包含日期和时间的组合,并显示如下
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";
}
答案 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]);
}
答案 1 :(得分:0)
这是一个可以解决这个问题并使开发更容易的答案。这个建议将需要一个额外的库来解决您在这里遇到的问题,但是在使用JavaScript日期时,您可能会发现它很有用。看起来你已经开始编写手动日期功能了。用强大的库来抽象它们来解决这些一再出现的相同问题。使用date.js,这就变得容易了
Date.parse('04/01/2015 8:48PM ')
答案 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]);
}