【问题标题】:javascript get first and last day of the previous week [duplicate]javascript获取前一周的第一天和最后一天[重复]
【发布时间】:2014-04-10 14:45:10
【问题描述】:

我想在 javascript 中获取前一周的第一天(星期一)和最后一个(星期日)。我已经检查了其他主题,但它不起作用。如果前一周在 2 个不同的月份,我还需要处理。

我正在使用此代码,但上周日是 06/03/2014 而不是 06/04/2014

var beforeOneWeek = new Date(new Date().getTime() - 60 * 60 * 24 * 7 * 1000)
  , day = beforeOneWeek.getDay()
  , diffToMonday = beforeOneWeek.getDate() - day + (day === 0 ? -6 : 1)
  , lastMonday = new Date(beforeOneWeek.setDate(diffToMonday))
  , lastSunday = new Date(beforeOneWeek.setDate(diffToMonday + 6));

$( "#dateDebut" ).val($.datepicker.formatDate('dd/mm/yy', lastMonday));
$( "#dateFin" ).val($.datepicker.formatDate('dd/mm/yy', lastSunday));

【问题讨论】:

  • 你是如何处理日期的?你的代码在哪里?可以加吗?
  • @alexk984 上周变化不大。虽然 OP 可以弄明白

标签: javascript date


【解决方案1】:

你必须克隆beforeOneWeek。在您的代码中,其他一切看起来都很好

var beforeOneWeek = new Date(new Date().getTime() - 60 * 60 * 24 * 7 * 1000)
var beforeOneWeek2 = new Date(beforeOneWeek);
  day = beforeOneWeek.getDay()
  diffToMonday = beforeOneWeek.getDate() - day + (day === 0 ? -6 : 1)
  lastMonday = new Date(beforeOneWeek.setDate(diffToMonday))
  lastSunday = new Date(beforeOneWeek2.setDate(diffToMonday + 6));

$( "#dateDebut" ).val($.datepicker.formatDate('dd/mm/yy', lastMonday));
$( "#dateFin" ).val($.datepicker.formatDate('dd/mm/yy', lastSunday));

【讨论】:

  • 它工作正常,谢谢
  • 这也适用于跨越不同年份的几周,对吧?或者如果一年的最后一周也有明年的几天,会有什么问题吗?
  • 这也适用于不同的年份。 beforeOneWeek 使用毫秒计算,因此天、月和年无关紧要。
【解决方案2】:

代码如下:

var _now = new Date();

// get sunday by subtraction current week day from month day
var sunday = new Date(_now.setDate(_now.getDate() - _now.getDay()));
// get monday by subtraction 6 days from sunday
var monday = new Date(_now.setDate(_now.getDate() - 6));
var isDifferentMonth = sunday.getMonth() !== monday.getMonth();

详细了解日期函数here

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 2021-07-21
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多