从周Javascript的天数中获取日期



我有一个模型在我的数据库中,包含一个数组名为"AvailableDays"[0…6]。0 =星期天&星期六。我希望将一周的这一天的数字转换为当前周的日期。

例如,这是逻辑分解

  1. 检索可用天数列表(const availableDays = [0,2,4,6])
  2. 获取当前日期(const today = new Date('2021-08-20');)
  3. 将日期转换为日期(output =['15-08-2021', '17-08-2021', '19-08-2021', '21-08-2021'])

您可以做的是从给定的Date实例中获得星期几,并从可用的日期计算出偏移量。

然后从给定的日期减去以天为单位的偏移量,得到结果。

const transformDate = (date, day) => {
const offset = date.getDay() - day

const d = new Date(date)
d.setDate(d.getDate() - offset)
return d
}
const availableDays = [0,2,4,6]
const today = new Date("2021-08-20")
console.log(availableDays.map(day => transformDate(today, day)))

我自己解决了这个问题。现在我可以将其封装到availableDates.map()中,并使用下面的逻辑返回日期数组。

var availableDay = 0
var d = new Date(),
day = d.getDay(), // 0 ... 6
calcAvailableDay = day-availableDay,
diff = d.getDate() - calcAvailableDay,
output = new Date(d.setDate(diff));
console.log(output)

您可以以周为单位生成所有的天,然后使用availableDays获取日期。

const getWeekDays = (current) => {
current.setDate((current.getDate() - current.getDay() - 1));
return Array.from({ length: 7 }, (_, i) => {
current.setDate(current.getDate() + 1)
return new Date(current).toLocaleDateString('en-CA');
});
},
today = new Date('2021-08-20'),
weekDays = getWeekDays(today),
availableDays = [0, 2, 4, 6],
availableDates = availableDays.map(day => weekDays[day]);
console.log(availableDates);

JavaScript getDay方法根据当地时间返回指定日期的星期几,其中0表示星期日。

那么你要做的就是把这个索引和你的availableDays值连接起来。

  • 获取当前日期、月份、年份和今天日期的索引。
  • 循环availableDays数组,并使用getDay值计算的当前日期与数组中指定的日值之间的差值创建新的日期。
  • 使用一些逻辑以指定的格式表示这些日期对象。我从这篇文章中得到支持来格式化你的日期字符串。

const availableDays = [0,2,4,6];
const today = new Date();
const currentDay = today.getDay();
const currentDate = today.getDate();
const currentMonth = today.getMonth();
const currentYear = today.getFullYear();
formatDateToString = (date) => String(date.getDate()).padStart(2, '0') + '-' + String(date.getMonth() + 1).padStart(2, '0') + '-' + date.getFullYear();
const output = availableDays.map((day) => formatDateToString(new Date(currentYear, currentMonth, currentDate - (currentDay - day))));
console.log(output);

相关内容

  • 没有找到相关文章