답변:
var date = new Date();
date ; //# => Fri Apr 01 2011 11:14:50 GMT+0200 (CEST)
date.setDate(date.getDate() - 1);
date ; //# => Thu Mar 31 2011 11:14:50 GMT+0200 (CEST)
매우 효율적이지 않지만 oneliner로 :
var yesterday = new Date(new Date().setDate(new Date().getDate()-1));
위의 세 가지 Date
객체는 불필요하게 낭비입니다. 다음을 사용하여 단일 인스턴스화로 줄일 수 있습니다.
var yesterday = (function(){this.setDate(this.getDate()-1); return this})
.call(new Date)
또는 원하는 경우 :
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
또는 화살표 기능이있는 ES6을 선호하는 경우 :
let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
이 시도
var d = new Date();
d.setDate(d.getDate() - 1);
놀랍게도 가장 쉬운 크로스 브라우저 솔루션에 대한 답은 없습니다
어제 정확히 같은 시간을 찾으려면 :
var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000
그것은 당신이 의존성을 자유롭게하고 싶다면 그렇지 않으면 http://momentjs.com을 사용하는 것이 좋습니다
질문을 일반화하고 다른 diff 계산을 사용하려면 다음을 사용하십시오.
var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);
이렇게하면 "지금"의 값을 기준으로 새 날짜 개체가 생성됩니다. 정수는 하루를 빼고 밀리 초 단위로 유닉스 시대를 나타냅니다.
이틀 전:
var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2);
한 시간 전에:
var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60);
new Date(Date.parse(new Date()) - 86400000)
. Date.now ()를 좋아하지만 대신 시도해 볼 것입니다. 추가 날짜를 저장합니다.
new Date(new Date().setDate(new Date().getDate()-1))
//Create a date object using the current time
var now = new Date();
//Subtract one day from it
now.setDate(now.getDate()-1);
var today = new Date();
var yesterday1 = new Date(new Date().setDate(new Date().getDate() - 1));
var yesterday2 = new Date(Date.now() - 86400000);
var yesterday3 = new Date(Date.now() - 1000*60*60*24);
var yesterday4 = new Date((new Date()).valueOf() - 1000*60*60*24);
console.log("Today: "+today);
console.log("Yesterday: "+yesterday1);
console.log("Yesterday: "+yesterday2);
console.log("Yesterday: "+yesterday3);
console.log("Yesterday: "+yesterday4);
이것은 분 정밀도로 어제 00:00에 생성됩니다.
var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);
d.setHours(0,0,0,0);
트릭을 할 것입니다
d.setHours(-1,0,0,0)
. 이것은 어제 날짜를 반환하지만 원하는 시간이 아닐 수도 있습니다 (23:00:00)
이것을 시도하고 나를 위해 일하십시오 :
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
이것은 어제 날짜 개체를 다시 얻었습니다.
var yesterday = new Date(); yesterday.setDate(today.GetDate() - 1)
오늘과 어제 모두 사용 가능
다음은 텍스트로 YYYY-MM-DD 형식의 어제 날짜를 가져오고 시간대 오프셋을 처리하는 데 사용되는 하나의 라이너입니다.
new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]
x 일 전의 날짜를 반환하도록 명백하게 변경 될 수 있습니다. 시간 등을 포함하려면
console.log(Date())
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]); // "2019-11-11"
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('.')[0].replace('T',' ')); // "2019-11-11 11:11:11"
// that is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000 // this is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000
어제 날짜와 날짜를 사람이 읽을 수있는 형식으로 지정하려면 DateHelper
다음과 같은 사용자 지정 개체를 만드는 것이 좋습니다 .
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 1 day
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -1));
( 이 바이올린 참조 )
momentjs를 사용할 수 있습니다.이 라이브러리로 많은 것을 얻을 수 있습니다.
현재 타이밍으로 어제 날짜 가져 오기
moment().subtract(1, 'days').toString()
시작 날짜로 어제 날짜 가져 오기
moment().subtract(1, 'days').startOf('day').toString()
"Date.now ()-86400000"은 일광 절약 시간 종료일 (당일 25 시간)에 작동하지 않습니다.
또 다른 옵션은 폐쇄를 사용하는 것입니다.
var d = new goog.date.Date();
d.add(new goog.date.Interval(0, 0, -1));
getDate
달의 날짜 를 반환하면 실패 하지만 (예 : 1-31) 실제로setDate(0)
날짜를 이전 달의 마지막 날로 설정합니다. 그래도 모든 브라우저에서 작동합니까?