个性化阅读
专注于IT技术分析

给定月,日和年,以及Zeller在JavaScript中的一致性,如何确定星期几

当然, 使用Moment.js中的库是确定特定日期是星期几的最佳选择, 我们不建议你采用其他方式。但是, 出于教育目的, 尤其是在大学里, 你将需要执行教授的任务, 以确定特定日期(过去和现在)的星期几。解决这一问题的最简单的编程解决方案是通过Zeller的一致性。

泽勒(Zeller)的全等方法可以算出一年中任何一天的星期几。最常见的是用于查找你的出生日期(可以根据上面的旧押韵确定你的性格)。

在这篇简短的文章中, 我们将向你解释如何轻松实现以及如何理解JavaScript的Zeller公式。

Zeller同等的JavaScript实现

在Zeller公式中, 月份从三月开始, 因此:

  • 三月= 1,
  • 四月= 2
  • 五月= 3
  • 依此类推…直到
  • 12月= 10,
  • 一月= 11
  • 2月= 12
  • 因此, 对于1990年6月8日, M = 6

令日数= D, 月数= M年=Y。如果M为1或2, 则将M加12, 然后从Y减去1。令C为Y的前两位, K为Y的最后两位。 。将(2.6M-5.39), (K / 4)和(C / 4)的整数部分加在一起。将这个D和K相加, 然后减去2C。 (数字的整数部分是整数部分:2.3的整数部分是2, 而6.7的整数部分是6。请注意, –1.7的整数部分是–2。这可以通过JavaScript的Math.floor函数完成。 )。

当该数字除以7时, 找到余数。如果该余数为0, 则天为星期天, 1为星期一, 2为星期二, 依此类推。此逻辑在JavaScript中的实现如下:

/**
 * Function that implements the zellers congruence and returns according to the result the day of the week.
 * 
 * @param D {Int} Number of the day (0-31)
 * @param M {Int} Number of the month (1-12)
 * @param Y {Year} Whole year e.g 2001
 */
function Zeller(D, M, Y){    
    var Day = "";

    if (M < 3)
    {
        M = M + 12;
        Y = Y - 1;
    }
    
    var C = Math.floor(Y / 100);
	var K = Y - (100 * C);
	
	var S = Math.floor(2.6 * M - 5.39) + Math.floor(K / 4) + Math.floor(C / 4) + D + K - (2 * C);
	
    var ans = S - (7 * Math.floor(S / 7));
    
    if (ans == 0)
    {
        Day = "Sunday";
    }
    else if (ans == 1)
    {
        Day = "Monday";
    }
    else if (ans == 2)
    {
        Day = "Tuesday";
    }
    else if (ans == 3)
    {
        Day = "Wednesday";
    }
    else if (ans == 4)
    {
        Day = "Thursday";
    }
    else if (ans == 5)
    {
        Day = "Friday";
    }
    else
    {
        Day = "Saturday";
    }
    
    return Day;
}

我们的zeller函数将返回一个字符串, 该字符串返回与日期对应的星期几, 例如:

// Thursday
Zeller(19, 11, 2020);

// Tuesday
Zeller(14, 05, 2019);

// Wednesday
Zeller(5, 2, 1670);

// .. and so on

编码愉快!

赞(0)
未经允许不得转载:srcmini » 给定月,日和年,以及Zeller在JavaScript中的一致性,如何确定星期几

评论 抢沙发

评论前必须登录!