【问题标题】:Javascript DateTime ComparisionJavascript 日期时间比较
【发布时间】:2011-10-21 03:26:06
【问题描述】:

假设我喜欢以下内容: 开始日期:“2011-10-20 14:30” 结束日期:“2011-10-20 17:30”

如果 startDate 大于 endDate,我想比较 startDate 和 endDate。本质上,我真正想要比较的方式是日期对象和日期对象,而不是字符串和字符串。

有人可以帮忙吗?

【问题讨论】:

  • 如果您可以保证该格式,您只需与> 进行字符串比较,仍然可以获得正确的结果。但是您的问题真的是“如何将这种格式的字符串转换为 JS 日期对象”?
  • 我不太确定如果我们在字符串中比较它会产生正确的结果。让我试试看!
  • 它将作为字符串比较工作,只要格式为年、月、日并且具有两位数的月、日、小时和分钟,例如,“2011-03-09 02: 05”。如果您的某些日期有一位数的月份或日期,例如“2011-3-9 2:05”,它将无法作为字符串比较。

标签: javascript datetime


【解决方案1】:

如果将字符串中的空格替换为“T”,则可以直接使用日期构造函数解析它们:

var startDate = new Date(('2011-10-20 14:30').replace(' ', 'T'));
var endDate = new Date(('2011-10-20 17:30').replace(' ', 'T'));

alert( startDate + ' is ' +  
      (startDate - endDate > 0? 'after ' : 'on or before ') +  endDate );

编辑

或者您可以将 '-' 替换为 '/' 用于 IE 和其他所有人(我认为...):

var startDate = new Date(('2011-10-20 14:30').replace(/-/g,'/'));
var endDate = new Date(('2011-10-20 17:30').replace(/-/g,'/'));

但是解析函数可能会更好。

【讨论】:

    【解决方案2】:
    d1 = new Date(startDate);
    d2 = new Date(endDate);
    if (d1>d2) alert('greater');
    

    【讨论】:

    • 由于日期,如果直接传递给Date构造函数,它们将导致无效日期。
    猜你喜欢
    • 2012-01-04
    • 2014-05-02
    • 2014-03-20
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多