【发布时间】:2014-09-20 21:39:09
【问题描述】:
我如何从 Moment JS 仅从所选日期的格式化对象中获取过去日期的周数?
【问题讨论】:
标签: javascript momentjs week-number
我如何从 Moment JS 仅从所选日期的格式化对象中获取过去日期的周数?
【问题讨论】:
标签: javascript momentjs week-number
$(document).ready(function(){
var weeknumber = moment("12-25-1995", "MM-DD-YYYY").week();
console.log(weeknumber);
});
根据 momentjs 文档:
因为不同的语言环境对一年中的星期编号的定义不同, Moment.js 添加了 moment#week 来获取/设置一年中的本地化周。
一年中的星期几取决于哪一天是第一天 星期(星期日、星期一等),哪一周是第一周 年。
例如,在美国,星期日是 星期。包含 1 月 1 日的那一周是一年中的第一周。
因此,如果您在获取正确的周数时遇到问题,请使用 .isoWeek()
$(document).ready(function(){
var weeknumber = moment("11-26-2016", "MMDDYYYY").isoWeek();
alert(weeknumber);
});
【讨论】:
moment().format('w')、moment().week()、moment().isoWeek() 等),您应该知道他们会给你确切的周数。例如,日期moment('2018-12-31').format('w') 将返回1,因为是 2019 年第一周的星期一。是 2018 年的最后一天,但不是 2018 年的一周。
你也可以使用format()
示例:
moment().format('w') // as .week() like '1'
moment().format('W') // as .isoWeek() like '1'
moment().format('ww') // as .week() (2 digits) like '01'
moment().format('WW') // as .isoWeek() (2 digits) like '01'
ISO 周日期:https://en.wikipedia.org/wiki/ISO_week_date
更多信息: https://momentjs.com/docs/#week-year-week-and-weekday-tokens
【讨论】:
GGGG 或 GG 给出对应于该周的 iso 年份
Monday 12/30/19) 实际上是 2020 年 ISO 第 1 周的一部分,因此如果您使用 WW yyyy 而不是 WW GGGG,您将得到 1 2019 而不是 @ 987654331@
moment("12-25-1995", "MM-DD-YYYY").format("GGGG-[W]WW-E")
获取当前日期的周数
moment(moment().toDate(), "MM-DD-YYYY").isoWeek()
【讨论】:
moment().toDate() 返回一个 Date 对象,就像 new Date() 一样。当 Date 实例传递给 moment 时,格式字符串将被忽略(因为它无关紧要)。 moment(new Date()) 与moment() 相同,所以上面的应该只是moment().isoWeek()。 ;-)
这与问题无关,但如果你想得到 1 代表星期一,2 代表星期二,等等
moment().format("d")
【讨论】: