在javascript中从时间字符串创建日期

在javascript中从时间字符串创建日期,javascript,time,Javascript,Time,我是javascript新手,正在尝试比较两个日期值,我得到两个格式的时间值字符串 上午06:30:47 下午1:10:47 我需要比较这些,看看第一个是否比另一个小。我不知道如何在javascript中做到这一点。有人能帮忙吗? o、 h使用日期对象。选中此项: 尝试将这两个值放入日期变量中,然后执行以下操作: if(var1.valueOf() > var2.valueOf()) { //Do Something } JavaScript指定的日期/时间解析(跨浏览器可以依赖的)

我是javascript新手,正在尝试比较两个日期值,我得到两个格式的时间值字符串

上午06:30:47

下午1:10:47

我需要比较这些,看看第一个是否比另一个小。我不知道如何在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
    作为奖励,您的时间现在与日期对象和其他时间计算更加兼容