Tud*_*scu 26 javascript momentjs
在给定特定日期的前一个星期一,我似乎有点问题.我正在尝试使用Moment js完成任务.显然,我可以手工完成,但发现很奇怪我无法使用他们网站上的moment.js文档中的示例来运行:http://momentjs.com/docs/#/get-set /天/.
我在尝试这样的事情:
moment([2013, 08, 15, 15, 20]).day(-1).format('ddd, MMM DD')
Run Code Online (Sandbox Code Playgroud)
导致"两天前"的日期,即9月13日,而不是预期的9月9日.
有人在这里有线索吗?谢谢.
mec*_*ish 58
下面是它的工作原理:
moment().day(1) // this monday
moment().day(-6) // last monday, think of it as this monday - 7 days = 1 - 7 = -6
Run Code Online (Sandbox Code Playgroud)
同样适用于其他方向:
moment().day(8) // next monday, or this monday + 7 days = 1 + 7 = 8
Run Code Online (Sandbox Code Playgroud)
您的代码moment().day(-1)可以解释为本周日 - 1天= 0 - 1 = -1或本周六 - 7天= 6 - 7 = -1
XML*_*XML 15
只有当您已经知道有关日期是在本周还是下周时,才能使用已接受的答案.如果你不知道怎么办?您需要在任意日期之后的下一个星期四吗?
首先,您想知道相关日期是否比您想要的日期更小或更大.如果它更大,你想在下周使用.如果它更小,你可以使用同一周的周一或周四.
const dayINeed = 4; // for Thursday
if (moment().isoWeekday() <= dayINeed) {
return moment().isoWeekday(dayINeed);
} else...
Run Code Online (Sandbox Code Playgroud)
如果我们已经过了我们想要的那一天(例如,如果我们的时刻是星期五,我们希望下一个星期四可用),那么你想要一个能够给你"在我们这一刻之后的星期四"的解决方案,无论我们的日子是什么日子,没有任何必要的加/减.简而言之,你想先用下一周进入下周moment().add(1, 'weeks').一旦你在下一周,你可以选择你想要的那一周的任何一天moment().day(1).
总之,这将为您提供符合您要求的下一个可用日期,无论您的初始时刻在哪一周:
const dayINeed = 4; // for Thursday
// if we haven't yet passed the day of the week that I need:
if (moment().isoWeekday() <= dayINeed) {
// then just give me this week's instance of that day
return moment().isoWeekday(dayINeed);
} else {
// otherwise, give me next week's instance of that day
return moment().add(1, 'weeks').isoWeekday(dayINeed);
}
Run Code Online (Sandbox Code Playgroud)
另见:https://stackoverflow.com/a/27305748/800457
| 归档时间: |
|
| 查看次数: |
28681 次 |
| 最近记录: |