l2a*_*lba 3 javascript time date week-number momentjs
我试图在给定日期前获得第一周的第一天
正确结果:
2017 = 1 月 2 日(星期一)
2016 = 1 月 4 日(星期一)
2015 = 1 月 1 日(星期四)
2014 = 1 月 1 日(星期三)
2013 = 1 月 1 日(星期二)
我可以通过以下方式获得一年的第一天:
moment().year(year).startOf('year') // All result is 1. jan XXXX
Run Code Online (Sandbox Code Playgroud)
然后我尝试了:(正确)
moment().day(1).year(2017).week(1) // 2 Jan (Monday) (correct)
Run Code Online (Sandbox Code Playgroud)
但是当改为2016时:(错误)
moment().day(1).year(2016).week(1) // 10 Jan (Sunday) (wrong)
Run Code Online (Sandbox Code Playgroud)
任何知道如何获得正确的结果?(我date()也对纯 JS 开放)
PS:周数基于挪威
游乐场: https : //jsfiddle.net/6sar7eb4/
无需使用循环,您可以简单地测试周数是否未1使用week()以提供本地化输出
的输出
moment#week将取决于当时的语言环境。
您必须使用locale()方法将语言环境设置为 moment以了解一周的开始语言环境。如果您必须用英文显示结果,您可以在本地更改语言环境。
这是一个工作示例:
function getFirstDayOfFirstWeekByYear( year ) {
// Create moment object for the first day of the given year
let func = moment({year:year})
// Check if 1st of January is in the first week of the year
if( func.week() !== 1 ){
// If not, add a week to the first day of the current week
func.startOf('week').add(1, 'week');
}
// Return result using english locale
return func.locale('en').format('D. MMMM YYYY (dddd)')
}
// Set Norwegian Bokmål locale globally
moment.locale('nb');
// Tester
[2017, 2016, 2015, 2014, 2013].forEach(function ( year ) {
let s = '<li>' + getFirstDayOfFirstWeekByYear( year ) + '</li>'
document.getElementsByTagName('BODY')[0].innerHTML += s
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5377 次 |
| 最近记录: |