从JavaScript的当前日期获取上个月的第一个日期

时间:2009-03-03 08:39:10

标签: javascript

请所有人共享代码,以便在JavaScript中查找上个月的当前日期的第一个日期。例如,如果当前日期是2009年1月25日,那么我应该将2008年12月1日作为结果。

9 个答案:

答案 0 :(得分:60)

直截了当,使用date methods

  var x = new Date();
  x.setDate(1);
  x.setMonth(x.getMonth()-1);

答案 1 :(得分:16)

最简单的方法是:

var x = new Date();
x.setDate(0); // 0 will result in the last day of the previous month
x.setDate(1); // 1 will result in the first day of the month

答案 2 :(得分:4)

检查此链接:

http://blog.dansnetwork.com/2008/09/18/javascript-date-object-adding-and-subtracting-months/

编辑:我已经打了一个例子:

Date.prototype.SubtractMonth = function(numberOfMonths) {
var d = this;
d.setMonth(d.getMonth() - numberOfMonths);
d.setDate(1);
return d;
}

$(document).ready(function() {
    var d = new Date();
    alert(d.SubtractMonth(1));
});

安德鲁

答案 3 :(得分:4)

从1月到12月搬家时更新年份

var prevMonth = function(dateObj) {
	var tempDateObj = new Date(dateObj);

	if(tempDateObj.getMonth) {
		tempDateObj.setMonth(tempDateObj.getMonth() - 1);
	} else {
		tempDateObj.setYear(tempDateObj.getYear() - 1);
		tempDateObj.setMonth(12);
	}

	return tempDateObj
};

var wrapper = document.getElementById('wrapper');

for(var i = 0; i < 12; i++) {
	var x = new Date();
  var prevDate = prevMonth(x.setMonth(i));
	var div = document.createElement('div');
  div.textContent = 
  "start month/year: " + i + "/" + x.getFullYear() +
  " --- prev month/year: " + prevDate.getMonth() +
  "/" + prevDate.getFullYear() +
  " --- locale prev date: " + prevDate.toLocaleDateString();
  wrapper.appendChild(div);
}
<div id='wrapper'>
</div>

答案 4 :(得分:1)

# I NEVER get past this point? :(
pop3server = poplib.POP3_SSL(pop3server,"995")
print (pop3server.getwelcome())
pop3server.user(username)
pop3server.pass_(password)
pop3info = pop3server.stat()
mailcount = pop3info[0]
print("Total no. of Email : " , mailcount)
print ("\n\nStart Reading Messages\n\n")
time.sleep(2)
parser = email.parser.FeedParser()
for msg in pop3server.retr(mailcount)[1]:
    parser.feed(msg+'\n')
message = parser.close()
payload = message.get_payload(decode=True)
print "".join(payload.split("\n\r"))

答案 5 :(得分:0)

这对我有用

var curDateMonth = new Date();
var prvDateMonth = new Date(curDateMonth.getFullYear(),curDateMonth.getMonth()-1,curDateMonth.getMonth());
console.log(curDateMonth.toLocaleString('en-US', { month: 'long' }) +' vs '+ prvDateMonth.toLocaleString('en-US', { month: 'long' }));

答案 6 :(得分:0)

重要说明:此处使用setMonth()的某些答案是错误的

2019年将使用一种衬板(使用ES6语法;所有主要浏览器和Node都支持):

    const date = new Date().toISOString(); // "2019-09-18T13:49:12.775Z"
    const [yyyy, mm, dd, h, i, s] = date.split(/T|:|-/);


    // previous month's last day
    const prev = new Date(new Date().setDate(0)).toISOString();
    const [pyyyy, pmm] = prev.split(/T|:|-/);

请注意,阵列解构可让您跳过部分内容:

    const date = new Date().toISOString();
    const [, , dd, , i] = date.split(/T|:|-/);

说明:上面的代码获取ISO日期2019-09-18T13:49:12.775Z并将其拆分到:-T上,并返回一个数组{ {1}},然后得到destructured

使用[2019, 09, 18, 13, 49, 12]是错误的:

setMonth()

答案 7 :(得分:0)

要获取上个月的00:00:00,请使用以下方法:

let d = new Date();
d.setDate(1);
d.setMonth(d.getMonth() - 1);
d.setHours(0,0,0,0);
const lastMonthStart = new Date(d);

希望这会有所帮助!

答案 8 :(得分:0)

///只要尝试一下就可以了

let date = new Date();
let month = new Date().getMonth();
let prevMonth = date.setMonth(month - 1)
let formatPrevMonth = new Date(date.setMonth(month - 1));

console.log(formatPrevMonth)