【问题标题】:Calendar with weeks starting by Monday / Vanilla JS / without jQuery从星期一开始的日历/Vanilla JS/没有 jQuery
【发布时间】:2015-11-08 23:15:37
【问题描述】:

我已经搜索了很多天如何制作一个日历(没有插件/库),星期从星期一开始,工作几个月从星期日开始。这是我的解决方案。

使用这个天数标签:

var days_labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; 

诀窍是当您定义一周的第一天(0 是星期日)时,请使用:

var first_day = new Date(this.year, this.month, 1),
    first_day_weekday = first_day.getDay() == 0 ? 7 : first_day.getDay();

在人类语言中:如果first_day 是星期日 (0),则使用 7,否则使用初始值。

有了这个,所有的循环都是正确的,并且每个月都能完美运行。完整示例:http://codepen.io/jacknumber/pen/RWLyQW

没有问题,它对于这个问题的用户搜索帮助 谢谢

(请随时纠正我的英语:))

【问题讨论】:

  • 自行回答问题很好,但您实际上需要同时发布问题和答案(一段时间后您将能够接受)。这样其他人也可以加入他们的答案,谁知道呢......也许有人会想出比你更好的答案。
  • 太糟糕了days_labels[first_day_weekday] 会给出错误的结果,甚至周日失败。

标签: javascript date internationalization


【解决方案1】:

在代码中,您需要定义月份开始的星期几。 Javascript 和其他编程语言一样,从星期日开始。要更改工作日顺序,您可以使用新的天顺序定义一个数组。星期日返回零(数组中的Mon),因此将其设置为 7(数组中的Sun)。

长版:

var first_day = new Date(this.year, this.month, 1),
    first_day_weekday;
if (first_day.getDay() == 0) {
    first_day_weekday = 7;
} else {
    first_day_weekday = first_day.getDay();
}

短版:

var first_day = new Date(this.year, this.month, 1),
    first_day_weekday = first_day.getDay() == 0 ? 7 : first_day.getDay();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多