从当前日期减去1周 - JavaScript

5

这是我获取当前日期的方式,格式为dd-MMM-yyyy。如何减去一周。

    var m_names = new Array("JAN", "FEB", "MAR",
            "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");

    var d = new Date();
    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    var curr_year = d.getFullYear();
    var current = curr_date + "-" + m_names[curr_month] + "-" + curr_year;

2
如果你需要处理的日期不仅限于这个简单的例子,那么你可能想考虑使用 http://momentjs.com/ 作为库,而不是自己动手实现。 - Marvin Smit
6个回答

6
只需在您的var d = new Date();之后添加d.setDate(d.getDate() - 7);即可。
 var m_names = new Array("JAN", "FEB", "MAR",
     "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");
 var d = new Date();
 d.setDate(d.getDate() - 7);
 var curr_date = d.getDate();
 var curr_month = d.getMonth();
 var curr_year = d.getFullYear();
 var current = curr_date + "-" + m_names[curr_month] + "-" + curr_year;

jsFiddle示例


5
您可以尝试以下方法:
var d= new Date();
d.setDate(d.getDate() - 7);

使用Date.js,你可以像这样做:
Date.parse("t - 7 d").toString("MM-dd-yyyy");     
Date.today().addDays(-7).toString("MM-dd-yyyy");  
Date.today().addWeeks(-1).toString("MM-dd-yyyy");

3

使用moment.js,鉴于

moment().calendar();

Today at 10:27 AM

那么你所需要的就是

moment().subtract('days', 7).format('DD-MMM-YYYY')

变成

06-Nov-2013

0

Moment.js 在处理相对日期等方面非常棒:

var one_week_ago = moment().subtract('weeks', 1).format('DD-MMM-YYYY')

0
为了对日期元素进行求和或相减,您所需做的就是:
let currentDate = new Date()
//get each element from the current date
let year = currentDate.getFullYear()
let month = currentDate.getMonth()
let day = currentDate.getDate()
let hours = currentDate.getHours()
let minutes = currentDate.getMinutes()
let seconds = currentDate.getSeconds()
let milliseconds = currentDate.getMilliseconds()


//build the new date according the changes you want to do
let newDate = new Date(year, month, day - 7, hours, minutes, seconds, milliseconds )
console.log(newDate.toISOString())

它的好处在于,即使每个参数的数字不是“有效”的,该方法也会正确地进行调整。例如,如果月份的数字为13,则会将另一年添加到日期中,并将月份设置为1。


-1
使用date-fns
import { format, subDays } from 'date-fns';

console.log(format(subDays(new Date(),7), 'dd-MMM-yyyy')); // 18-Oct-2023

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接