首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较Javascript中的日期(字符串)?

问如何比较Javascript中的日期(字符串)?
EN

Stack Overflow用户
提问于 2022-07-27 04:04:05
回答 3查看 70关注 0票数 0

我用条件写函数,哪一个应该比较日期,最后我应该得到特定日期的特殊结果?但工作不对,我想知道为什么?你能帮我一下吗?

代码语言:javascript
复制
function yourDates(date){
if (date <= '20.04' && date >= '21.03'){
    zodiak_name = 'Aries';
}
else if (date <= '21.04' && date >= '21.05'){
    zodiak_name = 'Taurus';
}
else if (date <= '22.05' && date >= '21.06'){
    zodiak_name = 'Twins';
}
else if (date <= '22.06' && date >= '22.07'){
    zodiak_name = 'Cancer';
}
else if (date <= '23.07' && date >= '21.08'){
    zodiak_name = 'Lion';
}
else if (date <= '22.08' && date >= '23.09'){
    zodiak_name = 'Virgin';
}
else if (date <= '24.09' && date >= '23.10'){
    zodiak_name = 'Scale';
}
else if (date <= '24.10' && date >= '22.11'){
    zodiak_name = 'Scorpion';
}
else if (date <= '23.11' && date >= '22.12'){
    zodiak_name = 'Archer';
}
else if (date <= '23.12' && date >= '20.01'){
    zodiak_name = 'Capricorn';
}
else if (date <= '21.01' && date >= '19.02'){
    zodiak_name = 'Aquarius';
}
else {
    zodiak_name = 'Fish'
};

return zodiak_name

}

EN

回答 3

Stack Overflow用户

发布于 2022-07-27 04:12:31

用于比较DD.MM日期的Alghoritm

  1. 比较月份

  1. 如果月份相等,请比较天数

在这段代码中,您将字符串视为数字,从而获得错误。

但是,如果您以MM.DD格式编写日期,则可以对它们进行编号和运行常规比较。

票数 1
EN

Stack Overflow用户

发布于 2022-07-27 04:58:54

不必使用硬编码的日期,您可以使用索引来查找月份,并在几天内将其存储在数组中。

思维过程

如果月份是1月,而日期小于20,这意味着我们仍然处于12月的符号中,在第二种情况下,我们正在检查同一月份的日期是否小于给定的日期,这意味着除了返回当月的符号外,我们仍然处于前一个月的符号中。

​

代码语言:javascript
复制
function getSign(userDate){
    const days =  [21, 20,21, 21, 22, 22, 23, 24, 24, 24, 23, 22];
    const signs = ["Aquarius", "Fish","Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn"];
    let [day, month]=userDate.split(".").map(item=>parseInt(item));
    // Subtracting one cause index starts from 0
    // January is 0th month
    month--;
    
    if(month == 0 && day <= 20){
      month = 11;
    }else if(day < days[month]){
      month--;
    };
    return signs[month];
}

​

票数 1
EN

Stack Overflow用户

发布于 2022-07-27 05:06:54

您可以使用像moment.js这样的库,也可以像上面提到的那样:

代码语言:javascript
复制
var dateFrom = "06/06/2022";
var dateTo = "06/10/2022";
var dateToCheck = "06/08/2022";

var d1 = dateFrom.split("/");
var d2 = dateTo.split("/");
var c = dateToCheck.split("/");

var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]);  // -1 because months are from 0 to 11
var to   = new Date(d2[2], parseInt(d2[1])-1, d2[0]);
var check = new Date(c[2], parseInt(c[1])-1, c[0]);

console.log(check > from && check < to)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73132134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档