#javascript #react-dates
#javascript #реагирующие даты
Вопрос:
Надеюсь, кто-нибудь сможет мне помочь. Я пытаюсь написать функцию для поиска воскресенья 9 недель назад, независимо от того, какой день недели сегодня использует javascript.
Я пробовал с помощью moment().day(-56), но он не работает. Любым другим способом мы можем это сделать?
Ответ №1:
Если вы решите использовать только собственный JS, это может удовлетворить ваши потребности.
<script>
var today = new Date();
// today.getDay() is current day-of-week (0=Sun ... 6=Sat)
var lastSun9wksAgo = new Date(today.getFullYear(), today.getMonth(), today.getDate()-(9*7 today.getDay()));
// alter display for 9 weeks ago with day-of-week offset
alert(lastSun9wksAgo.toDateString());
</script>
Может быть помещен в двухстрочную функцию, если используется повторно, например:
<script>
function sundayPriorWeeks(weeks) {
var today = new Date();
// today.getDay() is current day-of-week (0=Sun ... 6=Sat)
var lastSun9wksAgo = new Date(today.getFullYear(), today.getMonth(), today.getDate()-(9*7 today.getDay()));
// alter display for # weeks ago with day-of-week offset
return lastSun9wksAgo;
}
alert(sundayPriorWeeks(9).toDateString());
</script>
Ответ №2:
Это то, что вы ищете?
console.log(moment().startOf('week').subtract(9,'weeks').format("MM-DD-yyyy"))
Воскресенье — это начало недели, поэтому мы идем туда, чтобы найти базовую линию. Затем вычтите оттуда 9 недель, используя функцию вычитания Momentjs. Отформатирован для удобного вывода.
Ответ №3:
Согласно https://momentjscom.readthedocs.io/en/latest/moment/02-get-set/06-day / вы можете получить 9 воскресений назад с:
moment().day(-63)
Ответ №4:
Я думаю, вам нужно рассчитать неделю и день недели отдельно. Попробуйте что-то вроде этого: https://codepen.io/kevinashworth/pen/bGeGjGx
var thisWeek = moment().week()
var theSunday = moment().week(thisWeek - 9).weekday(0).format("dddd, MMMM Do, YYYY")
Комментарии:
1. Однако это зависит от локали. Воскресенье может не быть 0 в вашем регионе. Смотрите momentjs.com/docs/#/get-set/weekday
Ответ №5:
Я предполагаю, что вам нужно найти первое воскресенье 9 недель назад, так что, возможно, приведенные ниже функции помогут.
const findNineWeeksAgo = () => {
let nineWeeksAgo = new Date('August 19, 1975 23:15:30')
const nineWeeksInDays = 63
// You can modify a date using setDate. It automatically corrects for shifting to new months/years etc.
nineWeeksAgo.setDate(nineWeeksAgo.getDate() - nineWeeksInDays);
return nineWeeksAgo
}
const findNextSunday = () => {
const dateNineWeeksAgo = findNineWeeksAgo()
// getting the exact day of the week that was 9 weeks ago
let dayNineWeeksAgoe = dateNineWeeksAgo.getDay()
// if the exact day is sunday i.e 0 return that date in string format else find number of days to sunday add them to the exact date and reurn that.
if (dayNineWeeksAgoe === 0) return dayNineWeeksAgoe.toString()
else {
let daysLeftToSunday = 7 - dayNineWeeksAgoe
dateNineWeeksAgo.setDate(dateNineWeeksAgo.getDate() daysLeftToSunday);
return dateNineWeeksAgo.toString()
}
}
console.log(findNextSunday())