我是javascript的新手,我正在尝试比较两个日期值,我正在以格式获取两个时间值字符串
06:30:47 AM
01:10:47 PM
我需要比较这些以找出第一个是否小于另一个。我无法弄清楚如何在javascript中执行此操作。可以帮助人吗? o.h
答案 0 :(得分:2)
我不认为标准实现可以解析这个问题。我会做这样的事情:
function toDate(dateString) {
var timeComponents = dateString.replace(/\s.*$/, '').split(':');
if (dateString.indexOf("PM") > -1) {
timeComponents[0] += 12;
}
var date = new Date();
date.setHours(timeComponents[0]);
date.setMinutes(timeComponents[1]);
date.setSeconds(timeComponents[2]);
return date;
}
if (toDate('06:30:47 AM') > toDate('01:10:47 PM')) {
// ...
}
答案 1 :(得分:1)
JavaScript的指定日期/时间解析,您可以依赖跨浏览器,这是非常有限的。很长一段时间,规范中没有规定任何单一的字符串日期格式,并且从最近的第5版规范开始,唯一的强制格式是ISO-8601(以及一些子集)。您还不能依赖已实现第5版规范部分的浏览器。
所以你有两个选择:
自己解析字符串并使用Date
构造函数,该构造函数将日期的各个部分作为数字,例如new Date(year, month, day, hour, minute, second, ...)
。 (您只需要根据需要指定多个,例如new Date(2010, 9, 14)
即2010年9月14日。)
使用像Moment这样已经为您完成工作的库。 Moment允许您指定要解析的格式。
答案 2 :(得分:0)
使用Date对象。检查一下:http://www.w3schools.com/jsref/jsref_obj_date.asp
尝试将两个值放在Date变量中并执行以下操作:
if(var1.valueOf() > var2.valueOf())
{
//Do Something
}
答案 3 :(得分:0)
如果您的时间始终采用00:00:00 AM
格式,那么
var a="06:30:47 AM";
var b="01:10:47 PM";
var at=parseInt(a.substring(0,8).replace(/(^0+|:)/g,""));
var bt=parseInt(b.substring(0,8).replace(/(^0+|:)/g,""));
if (a.charAt(9)=="P") {at=at+120000};
if (b.charAt(9)=="P") {bt=bt+120000};
if (at<bt) {
// a is smaller
}
else
{
// a is not smaller
};
..应该是跨浏览器和时间/格式安全的。
答案 4 :(得分:0)
我试过这样的事情
var ts1 =“06:30:47 AM”;
var ts2 =“01:10:47 PM”;
var ds = new Date()。toDateString();
var d1 =新日期(ds +“”+ ts1);
var d2 =新日期(ds +“”+ ts2);
if(!(d2&gt; d1)){
警告(“d1应小于d2”);
}
这有什么问题吗?
答案 5 :(得分:0)
// specific formatter for the time format ##:##:## #M
var formatToMiliseconds = function(t){
t = t.split(/[:\s]/);
t = ((t[0] * 3600000) + (t[1] * 60000) * (t[2] * 1000)); // To ms
t = t + (/PM/i.test(t[3]) ? 43200000 : 0); // adjust for AM/PM
return t;
}
var time01 = formatToMiliseconds('06:30:47 AM');
var time02 = formatToMiliseconds('01:10:47 PM');
alert(time01 > time02); // false
allert(time01 < time02); // true
作为奖励,您的时间现在与Date对象和其他时间计算更加兼容。