JavaScript에서 어제 날짜 계산
JavaScript에서 어제를 날짜로 계산하려면 어떻게 해야 하나요?
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)
[edit sept 2020] : 이전 답변을 담은 토막과 화살표 기능 추가
[2022년 4월]:이 슬라이드는 다음 슬라이드에 있는Date
프로토타입(글로벌네임스페이스를 오염시키지 않음)
// a (not very efficient) oneliner
let yesterday = new Date(new Date().setDate(new Date().getDate()-1));
console.log(`Yesterday (oneliner)\n${yesterday}`);
// a function call
yesterday = ( function(){this.setDate(this.getDate()-1); return this} )
.call(new Date);
console.log(`Yesterday (function call)\n${yesterday}`);
// an iife (immediately invoked function expression)
yesterday = function(d){ d.setDate(d.getDate()-1); return d}(new Date);
console.log(`Yesterday (iife)\n${yesterday}`);
// oneliner using es6 arrow function
yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
console.log(`Yesterday (es6 arrow iife)\n${yesterday}`);
// use a method
const getYesterday = (dateOnly = false) => {
let d = new Date();
d.setDate(d.getDate() - 1);
return dateOnly ? new Date(d).toDateString() : d;
};
console.log(`Yesterday (method)\n${getYesterday()}`);
console.log(`Yesterday (method dateOnly=true)\n${getYesterday(true)}`);
// use Date.now
console.log(`Yesterday, using Date.now\n${new Date(Date.now() - 864e5)}`);
.as-console-wrapper {
max-height: 100% !important;
}
가장 쉬운 크로스 브라우저 솔루션에 대한 답변이 의외로 없다
어제와 정확히 같은 시간을 찾으려면*:
var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000
*: 캘린더의 이상함(서머타임제 등)에 대한 정확성이 저하되지 않을 경우 이 방법은 잘 작동합니다.그렇지 않을 경우 https://moment.github.io/luxon/을 사용하는 것이 좋습니다.
이거 드셔보세요
var d = new Date();
d.setDate(d.getDate() - 1);
질문을 일반화하고 다른 계산을 수행하려면 다음을 사용합니다.
var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);
이를 통해 "now" 값을 밀리초 단위로 unix epoch를 나타내는 정수로 하여 하루를 뺀 새로운 날짜 객체가 생성됩니다.
이틀 전:
var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2);
1시간 전:
var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60);
나는 모멘트 라이브러리를 이용하는데, 그것은 매우 유연하고 사용하기 쉽다.
고객님의 경우:
let yesterday = moment().subtract(1, 'day').toDate();
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);
효과가 있을 것이다
다음은 YYY-MM-DD 형식의 yesterdays 날짜를 텍스트로 가져와 시간대 오프셋을 처리하기 위해 사용되는 라이너입니다.
new Date(Date.now() - 1 * 864e5 - new Date(Date.now() - 1 * 864e5).getTimezoneOffset() * 6e4).toISOString().split('T')[0]
원래대로 x일 전으로 돌아오는 날짜로 변경될 수 있습니다.시간 등을 포함하다
console.log(Date())
console.log(new Date(Date.now() - 1 * 864e5 - new Date(Date.now() - 1 * 864e5).getTimezoneOffset() * 6e4).toISOString().split('T')[0]); // "2019-11-11"
console.log(new Date(Date.now() - 1 * 864e5 - new Date(Date.now() - 1 * 864e5).getTimezoneOffset() * 6e4).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
한 번 해봐, 나한테는 효과가 있어.
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
이것으로 어제 날짜 오브젝트가 반환되었습니다.
어제 날짜를 가져오고 날짜를 사람이 읽을 수 있는 형식으로 포맷하려면 사용자 정의 작성을 고려하십시오.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시간)에 작동하지 않습니다.
또 다른 옵션은 Closure(폐쇄)를 사용하는 것입니다.
var d = new goog.date.Date();
d.add(new goog.date.Interval(0, 0, -1));
경계 날짜 문제 해결 (2019, 01, 01) -> 2019, 12, 31
var now = new Date();
return new Date(now.getMonth() - 1 === 0 ? now.getFullYear() - 1 : now.getFullYear(),
now.getDate() - 1 === 0 ? now.getMonth() - 1: now.getMonth(),
now.getDate() - 1);
2위 파비아노와 다른 사람들은 이미 비슷한 대답을 공유했지만, 이것을 실행하면 더 분명해 보일 것이다.
86400000 = 하루에 밀리초
const event = new Date();
console.log(new Date(Date.parse(event) - 86400000))
console.log(event)
언급URL : https://stackoverflow.com/questions/5511323/calculate-the-date-yesterday-in-javascript
'programing' 카테고리의 다른 글
문자열에서 판다 데이터 프레임 생성 (0) | 2023.01.05 |
---|---|
PHP YAML 파서 (0) | 2023.01.05 |
새로운 self();는 PHP에서 무엇을 의미합니까? (0) | 2023.01.05 |
C 오류: 함수에 대한 참조가 정의되지 않았지만 IS가 정의되었습니다. (0) | 2023.01.05 |
같은 컨트롤러에서 다른 기능을 호출하고 있습니까? (0) | 2023.01.05 |