【问题标题】:Compare two time values (hh:mm am/pm)比较两个时间值 (hh:mm am/pm)
【发布时间】:2013-03-07 11:57:54
【问题描述】:

我有两个从下拉框中选择的时间值。时间格式为hh:mm am/pm。我需要比较这两个日期。我已经完成了这段代码,但它对我不起作用。

<select id="eventstarttime">
  <option>10:00am</option>
  ........
  <option>3:00pm</option>
 </select>

 <select id="eventstoptime" onblur="return checktime()">
  <option>10:00am</option>
  ........
  <option>3:00pm</option>
 </select>

javascript方法是

 function checktime()
{
    var start = document.getElementById("eventstarttime").value;
    var end = document.getElementById("eventstoptime").value;


    if(Date.parse('01/01/2011 '+end) < Date.parse('01/01/2011 '+start))
    {
        alert("End time should exceed the start time");
    }
    else if(Date.parse('01/01/2011 '+end) -Date.parse('01/01/2011 '+start)==0)
    {
        alert("Start time and end time cannot be same");
    }
    return false;
}

【问题讨论】:

  • 在 PHP 或 JavaScript 中? Date.parse 只接受 RFC 2822 或 ISO 8601 格式的字符串。所有其他格式都取决于实现。
  • @MarcelKorpel 它的 php html 和 js
  • 但是你想要一个 PHP 脚本还是 JavaScript 脚本?您的问题标题要求使用 PHP 解决方案,但您的问题正文提供了一个无效的 JavaScript 解决方案。
  • @MarcelKorpel 我想要 js 中的脚本
  • dtEnd 和 dtStart 来自哪里?它们似乎是未定义的。

标签: javascript html


【解决方案1】:

如果你给option元素添加一个24小时的value属性,比如

<select id="eventstarttime">
  <option value="1000">10:00am</option>
  <option value="1215">12:15pm</option>
  <option value="1500">3:00pm</option>
</select>

<select id="eventstoptime" onblur="return checktime()">
  <option value="1000">10:00am</option>
  <option value="1215">12:15pm</option>
  <option value="1500">3:00pm</option>
</select>

您可以使用它们轻松比较它们

function checktime()
{
    var start = document.getElementById("eventstarttime").value;
    var end = document.getElementById("eventstoptime").value;

    if (end < start)
    {
        alert("End time should exceed the start time");
    }
    else if (end == start)
    {
        alert("Start time and end time cannot be same");
    }
    return false;
}

不需要 JavaScript Date 方法。

【讨论】:

  • 如果时间是12.15就很难了
  • @Anaz:您还可以在value 属性中添加分钟数。编辑代码。
【解决方案2】:

您必须用space 将am 和pm 与时间值分开。同样在你的代码变量dtEnd 和dtStart 没有定义。 在 else 部分中,如下所示:

else if(end == start)
{
   alert("Start time and end time cannot be same");
}

【讨论】:

  • 我已经编辑了代码。但是如果我删除了上午和下午,你说如果时间是下午 5 点,我需要添加 12,即下午 5 点 = 5+12=17:00
  • 不要删除它。用空格将 am pm 与整数值分开。
  • 您依赖于实现相关的Date.parse 格式。它可能不适用于所有浏览器。
【解决方案3】:

在您的 HTML 代码中,在选择 option 值中的 'hh:mm' 和 'am/pm' 之间添加空格

 function checktime()
{
    var start = document.getElementById("eventstarttime").value;
    var end = document.getElementById("eventstoptime").value;


    if(Date.parse('01/01/2011 '+end) < Date.parse('01/01/2011 '+start))
    {
        alert("End time should exceed the start time");
    }
    else if(Date.parse('01/01/2011 '+end) -Date.parse('01/01/2011 '+start)==0)
    {
        alert("Start time and end time cannot be same");
    }
    return false;
}
<select id="eventstarttime">
  <option value='10:00 am'>10:00am</option>
  <option value='3:00 pm'>3:00pm</option>
 </select>

 <select id="eventstoptime" onblur="return checktime()">
  <option value='10:00 am'>10:00am</option>
  <option value='3:00 pm'>3:00pm</option>
 </select>

【讨论】:

    【解决方案4】:

    试试strtotime (http://php.net/manual/en/function.strtotime.php)

    $firstTime="10:00 am";
    $secondTime="3:00 am";
    $result =strtotime ($firstTime) > strtotime($secondime);
    

    【讨论】:

    • 原来 OP 想要一个 JavaScript 脚本。
    【解决方案5】:

    你可以通过 PHP 来做到这一点:

    var d1 = "15:30";
    var d2 = "15:36";
    if (new Date(d1) < new Date(d2)) {alert('newer')}
    

    查看参考网址:

    jQuery/JS - How to compare two date/time stamps?

    how to get current time and then compare them using jquery

    使用 PHP 你可以这样做:

    $time1 = strtotime("15:30");
    $time2 = strtotime("15:40");
    
    if($time1<$time2)
    {
       echo "time 1 is smaller";
    }
    else if($time1>$time2)
    {
       echo "time 2 is smaller";
    }
    else
    {
       echo "both are same";
    }
    

    希望对你有帮助

    【讨论】:

    • 这在我看来像 JavaScript。
    • @Hardik你能描述一下值d1里面的内容吗。第一段是日期,T是什么意思??
    • 您想如何比较?我的意思是 PHP 还是 JS?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2021-02-17
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多