在javascript中从时间字符串创建日期
我是javascript新手,正在尝试比较两个日期值,我得到两个格式的时间值字符串 上午06:30:47 下午1:10:47 我需要比较这些,看看第一个是否比另一个小。我不知道如何在javascript中做到这一点。有人能帮忙吗?在javascript中从时间字符串创建日期,javascript,time,Javascript,Time,我是javascript新手,正在尝试比较两个日期值,我得到两个格式的时间值字符串 上午06:30:47 下午1:10:47 我需要比较这些,看看第一个是否比另一个小。我不知道如何在javascript中做到这一点。有人能帮忙吗? o、 h使用日期对象。选中此项: 尝试将这两个值放入日期变量中,然后执行以下操作: if(var1.valueOf() > var2.valueOf()) { //Do Something } JavaScript指定的日期/时间解析(跨浏览器可以依赖的)
o、 h使用日期对象。选中此项: 尝试将这两个值放入日期变量中,然后执行以下操作:
if(var1.valueOf() > var2.valueOf())
{
//Do Something
}
JavaScript指定的日期/时间解析(跨浏览器可以依赖的)出人意料地有限。很长一段时间以来,规范中没有强制使用的单字符串日期格式,而在最近的第5版规范中,唯一强制使用的格式是(和一些子集)。您还不能依赖浏览器来实现第5版规范的这一部分
因此,您有两个选择:
Date
构造函数,该构造函数将日期的各个部分作为数字,例如新日期(年、月、日、小时、分钟、秒等)
。(您只需指定所需数量,例如新日期(2010年9月14日)
是2010年9月14日。)我不认为标准实现可以解析这一点。我会这样做:
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')) {
// ...
}
如果您的时间始终为
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
};
var a=“06:30:47上午”;
var b=“01:10:47下午”;
var at=parseInt(a.substring(0,8).replace(/(^0+):)/g,”);
var bt=parseInt(b.子字符串(0,8).替换(/(^0+):)/g,”);
如果(a.charAt(9)=“P”){at=at+120000};
如果(b.charAt(9)=“P”){bt=bt+120000};
如果(在我试过这样的东西
var ts1=“06:30:47上午”
var ts2=“01:10:47下午”
var ds=new Date().toDateString()
变量d1=新日期(ds+“”+ts1)
var d2=新日期(ds+“”+ts2)
如果(!(d2>d1)){
警报(“d1应小于d2”)
}
这有什么问题吗?//时间格式的特定格式化程序####:#####M
// 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
var formatomiliseconds=函数(t){
t=t.split(/[:\s]/);
t=((t[0]*3600000)+(t[1]*60000)*(t[2]*1000));//到ms
t=t+(/PM/i.test(t[3])?43200000:0);//针对AM/PM进行调整
返回t;
}
var time01=formatomiliseconds('06:30:47 AM');
var time02=formatomiliseconds('01:10:47 PM');
警报(time01>time02);//错误
allert(time01
作为奖励,您的时间现在与日期对象和其他时间计算更加兼容