【问题标题】:How to compare dates of unknown format in javascript?如何在javascript中比较未知格式的日期?
【发布时间】:2016-04-30 00:32:05
【问题描述】:

在我的应用程序中,我使用了四种不同类型的日期格式: 1。 dd/MM/yyyy 。 2。月/日/年。 3。 dd-MM-yyyy . 4。 MM-dd-yyyy。 根据选择的格式,用户可以从日期选择器中检索格式化日期。现在我必须比较两个日期,来自屏幕中的两个文本框(日期选择器)。 我已经尝试过分配,但无法为这个日期格式的 bcoz 找到正确的解决方案。以下代码是比较示例:

var date1 = document.getElementById("<%=txt1date.ClientID%>");
var date2 = document.getElementById("<%=txt2date.ClientID%>");

if(date1.value > date2.value)
{        
    //do something
     return false;
 }

现在我的问题是,如何在 var 中获取正确的日期,以便此 caparison 可以适用于上述任何格式?

【问题讨论】:

  • 你可以直接使用 Moment,很棒
  • 你是在比较 DOM 节点,而不是日期
  • 可能需要重新考虑您的方法 - 而不是在整个应用程序中使用四种不同的日期格式,选择一种格式 (see guide here)。您可以解析用户输入的日期以适合您选择的格式。
  • 如何知道是 6 月 2 日还是 2 月 6 日?
  • 越多越好,大部分用户在看不懂如何输入简单的日期时觉得很有趣,你也应该添加一堆神秘的错误信息,这样可以很好地配合整体主题。

标签: javascript date datetime


【解决方案1】:

使用MomentJS

var date1 = moment(document.getElementById("<%=txt1date.ClientID%>"));
var date2 = moment(document.getElementById("<%=txt2date.ClientID%>"));

if(date1 > date2)
{        
    //do something
     return false;
}

【讨论】:

  • 这就是我一直在说的,应该总是添加一个完整的库来在javascript中做一些简单的日期解析
  • 这甚至不是正确的。您正在将整个 DOM 节点传递给 moment() 函数。
  • 即使你传递的是值而不是元素,Moment.js 也只会猜测格式如此完全不可靠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
相关资源
最近更新 更多