【问题标题】:compare two string Date js?比较两个字符串日期 js?
【发布时间】:2018-09-19 17:30:01
【问题描述】:

我有两个不同格式的日期字符串:

var date1 = "20/09/2016";//DD/MM/YYYY
var date2 = "Sep 5, 2018 12:00:00 AM"; // MMM DD, YYYY hh:mm:ss AM

如何仅使用 DD & MM & YYYY 将两个字符串转换为日期并进行比较?

【问题讨论】:

标签: javascript string date compare


【解决方案1】:

为了比较两个日期,您必须先将其转换为 Date 类型。

对于DD/MM/YYYY,我把日期和月份的顺序改成了new Date()处理,其他日期格式可以直接转换。

之后,您只需获取时间并根据需要进行比较。此外,如果您只想比较这些字段,您可以使用 getYeargetMonthgetDate 等方法

Date information

var dateParts = "20/09/2016".split("/");

var date1 = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var date2 = new Date("Sep 5, 2018 12:00:00 AM"); // MMM DD, YYYY hh:mm:ss AM

if (date1.getTime() > date2.getTime()){
  console.log("date1 is higher");
}else {
  console.log("date1 is lower");
}

【讨论】:

  • Re "...你必须先将其转换为 Date 类型。" 不一定。如果两者都被格式化为 YYY-MM-DD 它们可以作为字符串进行比较,或者删除破折号并将它们作为数字进行比较。 ;-)
【解决方案2】:

为了比较它们,你可以在UTC中构造如下ISO格式的Date对象,然后使用getTime方法:

var newDate1 = new Date('2016-09-20Z');
var newDate2 = new Date('2018-08-05T12:00:00Z');
var equalDates = newDate2.getTime()===newDate1.getTime();

最后的 Z 表示它应该被解析为 UTC。

如果你不能像这样直接构造它们,你应该像解析任何其他字符串一样解析它们。以下是解析第一个字符串的方法,例如:

var date1 = "20/09/2016";
var dateArray=date1.split('/');
var newDate1 = new Date(dateArray[2], dateArray[1] - 1, dateArray[0]); //JavaScript counts months from 0

moment.js 库也可能对您有用。

【讨论】:

  • 这种情况下不需要解析第二个字符串。 Date 构造函数将接受它
  • "最后的 Z 表示它应该被解析为 UTC"。不适用于日期,其中 Z 创建非标准字符串,因此解析依赖于实现,并在至少一个正在使用的浏览器中创建无效日期。
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2013-06-24
  • 2014-04-21
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多