如何比较两个日期与moment.js

问题描述 投票:0回答:1

我有三种不同类型的日期,我无法比较它们。

let withOneDayLess = moment().subtract(1, "days").format("DD-MM-YYYY");
//let justnow = moment().format("DD-MM-YYYY");
let takenAt = moment.unix(story.takenAt).format("DD-MM-YYYY");

if(takenAt >= withOneDayLess){
    Arrstory.push(story)
     console.log(takenAt," - " ,withOneDayLess)
  };

story.takenAt是unix中故事的日期,我需要昨天和今天之间的所有故事,但我认为if只比较第一个数字,给我的故事不对应

javascript momentjs
1个回答
2
投票

我假设您的currentDate变量也被创建为.format("DD-MM-YYYY")方法调用...因此您不会比较日期 - 您正在比较字符串。比较日期以获得您想要的结果:

var d1 = moment().subtract(1,"days");
var d2 = moment();
if (d1 < d2) alert(d1);


let currentDate = moment();
let story = { takenAt: 1746713004 };
let withOneDayLess = moment().subtract(1, "days").format("DD-MM-YYYY");
let justnow = moment().format("DD-MM-YYYY");
let takenAt = moment.unix(story.takenAt).format("DD-MM-YYYY");

// this will never alert - typeof(takenAt) === "string" and the comparison
// "08-05-2025" is not >= "Sat Jan 05 2019 10:36:11 GMT-0800" as currentDate
// get coerced to a string to do the comparison if it's not a string already.
if(takenAt >= currentDate){
   alert("takenAt is later than currentDate");
}

// this WILL work because it's comparing a moment date to a moment date directly.
takenAt = moment.unix(story.takenAt);
if(takenAt >= currentDate){
   alert(takenAt.format("DD-MM-YYYY") + " is later than " + currentDate.format("DD-MM-YYYY"));
}
© www.soinside.com 2019 - 2024. All rights reserved.