使用 JavaScript 获取给定的日期年份、周数、一周内的日数
Get date given year, week number, day number within week with JavaScript
正如主题所建议的那样 - 我希望得到一个日期,当我只有年份(例如 2014 年)、周数(例如 47)和该周内的天数(例如 3 - 这将是星期三)。
我反过来也看到过一些类似的问题,但逆向工程的答案并没有提供任何成功的结果。
有什么想法吗?
我强烈建议您使用 The Moment.js 库。这是一个完整的日期操作库。
您的问题将通过此moment().year(2014).week(47).day(3).toDate();
解决
function getDatebyWeek(year, week, day) {
var d = {
year: year,
month: 0,
day: 1
};
var date = new Date(d.year, d.month, d.day);
var weekCount = 0;
var month = 1;
var done = false;
while (weekCount < week) {
while (date.getMonth() < month) {
if (d.day % 7 === 0) {
weekCount++;
}
d.day++;
date.setDate(d.day);
if (weekCount === week) {
done = true;
break;
}
}
if (done) {
break;
}
month++;
d.month = month - 1;
d.day = 1;
date.setMonth(d.month);
date.setDate(d.day);
}
if (day <= d.day && day >= (d.day - 7)) {
return new Date(d.year, d.month - 1, day);
} else {
throw new Error('The day you entered is not in week ' + week);
}
}
var wk = getDatebyWeek(2014, 47, 22);
document.write(wk.toString());
我写了这个非常丑陋的功能,以防万一你有什么反对的时刻.js :)
发件人 : 在 javascript 中获取给定年份、周数和日数的一周中的第一个日期
OP 的答案是(如果 dayNumber 从 1(星期一)到 7(星期日)):
function getWeekDate(year, weekNumber, dayNumber) {
var date = new Date(year, 0, 10, 0, 0, 0),
day = new Date(year, 0, 4, 0, 0, 0),
month = day.getTime() - date.getDay() * 86400000;
return new Date(month + ((weekNumber - 1) * 7 + (dayNumber - 1)) * 86400000);
};
alert(getWeekDate(2014, 47, 3));
相关文章:
- 创建一个数组数组,没有任何重复的Javascript
- 如何在javascript中获取一年中的周数,其中周日是一周中的第一天
- 按每个数组中的一个值对一组关联数组进行排序
- 一次更改数组的多个值的最短方法
- 如何将一维整数数组从 QML 发送到C++
- 使用 for 循环创建一个数组数组
- 使用 JavaScript 获取给定的日期年份、周数、一周内的日数
- 将一的JSON数组转换为对象
- JavaScript在一维关联数组中转换多维数组
- 一次从数组中取三个元素
- 从URL字符串为URL的每一段创建数组
- 一次返回数组的x个元素
- 用Javascript中的另一项替换数组中的一项
- 如何一次选择数组中的所有项目,并为它们添加类
- 如何按顺序和一次显示数组中的项
- 拆分数组仍然是一个包含一项的数组,而不是字符串
- 将来自 FOR 循环的结果存储为一个数组(数组仅单独保存每个结果)
- 给定一个数组数组,我想调用一个函数,将每个数组作为参数传递
- AngularJS:一次在数组中显示一个特定的对象
- 从只显示一次的数组中选择图像