JavaScript Date 객체에 30분을 추가하는 방법
다른 날짜 개체보다 30분 늦은 날짜 개체를 받고 싶습니다.JavaScript를 사용하는 방법
라이브러리 사용
날짜 작업이 많은 경우 Datejs나 Moment.js와 같은 JavaScript 날짜 라이브러리를 살펴보는 것이 좋습니다.예를 들어 Moment.js의 경우 다음과 같이 됩니다.
var newDateObj = moment(oldDateObj).add(30, 'm').toDate();
바닐라 자바스크립트
이것은 혼돈의 해답과 같습니다만, 한 줄에 다음과 같습니다.
var newDateObj = new Date(oldDateObj.getTime() + diff*60000);
어디에diff
원하는 분 단위의 차이입니다.oldDateObj
의 시간.심지어 부정적일 수도 있다.
또는 재사용 가능한 기능으로 여러 장소에서 이 작업을 수행해야 하는 경우:
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
그리고 만약 이것이 명확하지 않다면, 우리가 분에 곱하는 이유는60000
분수를 밀리초로 변환하는 것입니다.
Vanilla Javascript를 주의하세요.데이트는 어렵다!
당신은 내일 날짜를 얻기 위해 24시간을 더 할 수 있다고 생각할 수 있습니다, 그렇죠?땡!
addMinutes(myDate, 60*24); //DO NOT DO THIS
사용자가 서머타임을 준수한다면 하루가 반드시 24시간이라고는 할 수 없는 것으로 나타났습니다.1년에 하루 23시간밖에 안 되는 날이 있고, 1년에 하루 25시간 되는 날이 있다.예를 들어, 미국과 캐나다의 대부분은 2014년 11월 2일 자정 이후 24시간 후에도 여전히 11월 2일입니다.
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
그렇기 때문에 많은 작업을 해야 한다면 앞에서 언급한 라이브러리 중 하나를 사용하는 것이 더 안전한 방법입니다.
다음은 제가 작성한 이 기능의 보다 일반적인 버전입니다.저는 여전히 도서관을 사용하는 것을 권장하고 있지만, 당신의 프로젝트에는 너무 많은 도움이 될 수도 있고 불가능할 수도 있습니다.이 구문은 MySQL DATE_ADD 함수를 모델로 합니다.
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
jsFiddle 데모 작업 중.
var d1 = new Date (),
d2 = new Date ( d1 );
d2.setMinutes ( d1.getMinutes() + 30 );
alert ( d2 );
var oldDateObj = new Date();
var newDateObj = new Date();
newDateObj.setTime(oldDateObj.getTime() + (30 * 60 * 1000));
console.log(newDateObj);
var now = new Date();
now.setMinutes(now.getMinutes() + 30); // timestamp
now = new Date(now); // Date object
console.log(now);
이런 거?
var d = new Date();
var v = new Date();
v.setMinutes(d.getMinutes()+30);
console.log(v)
JS에서 날짜로 작업하기 위해 항상 7가지 함수를 만듭니다.
addSeconds
,addMinutes
,addHours
,addDays
,addWeeks
,addMonths
,addYears
.
http://jsfiddle.net/tiagoajacobi/YHA8x/ 의 예를 참조해 주세요.
사용방법:
var now = new Date();
console.log(now.addMinutes(30));
console.log(now.addWeeks(3));
기능은 다음과 같습니다.
Date.prototype.addSeconds = function(seconds) {
this.setSeconds(this.getSeconds() + seconds);
return this;
};
Date.prototype.addMinutes = function(minutes) {
this.setMinutes(this.getMinutes() + minutes);
return this;
};
Date.prototype.addHours = function(hours) {
this.setHours(this.getHours() + hours);
return this;
};
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + days);
return this;
};
Date.prototype.addWeeks = function(weeks) {
this.addDays(weeks*7);
return this;
};
Date.prototype.addMonths = function (months) {
var dt = this.getDate();
this.setMonth(this.getMonth() + months);
var currDt = this.getDate();
if (dt !== currDt) {
this.addDays(-currDt);
}
return this;
};
Date.prototype.addYears = function(years) {
var dt = this.getDate();
this.setFullYear(this.getFullYear() + years);
var currDt = this.getDate();
if (dt !== currDt) {
this.addDays(-currDt);
}
return this;
};
한 줄 코드
var afterSomeMinutes = new Date(new Date().getTime() + minutes * 60000);
어디에minutes
숫자입니다.
Moment.js 사용을 중지합니다.
다른 훌륭한 답변에서 권장하는 바와 같이, 대부분의 경우 날짜를 거래할 때 라이브러리를 사용하는 것이 가장 좋습니다.그러나 2020년 9월부터는 Moment.js가 레거시로 간주되어 더 이상 새로운 프로젝트에 사용되지 않도록 해야 합니다.
공식 문서에서 Moment의 발언을 인용합니다.
향후의 새로운 프로젝트에 모멘트를 사용하는 것을 억제하고 싶습니다.[...] 일반적으로, 모멘트는 메인터넌스 모드의 레거시 프로젝트로 간주하고 있습니다.죽은 것은 아니지만, 이미 끝난 것이다.
최신 라이브러리
다음은 모멘트가 권장하는 대안입니다.
룩손
룩슨은 모멘트의 진화라고 생각할 수 있다.이 책은 모먼트의 오랜 기고자인 아이작 캠브론이 집필했다.Luxon의 존재 이유 및 Luxon 문서의 For Moment 사용자 페이지를 참조하십시오.
Intl
- ★★★★★★★★★★★★★★★★★:
Intl
import {DateTime} from 'luxon'
function addMinutes(date, minutes) {
return DateTime.fromJSDate(date).plus({minutes}).toJSDate()
}
day.js
Day.js는 유사한 API를 사용하여 Moment.js를 최소화할 수 있도록 설계되었습니다.드롭인 대체는 아니지만, Moment의 API 사용에 익숙하고 빠르게 작업을 진행하려면 Day.js 사용을 고려해 보십시오.
- 로케일:개별적으로 가져올 수 있는 사용자 정의 데이터 파일
- ★★★★★★★★★★★★★★★★★:
Intl
" " "을(를) 합니다.
import dayjs from 'dayjs'
function addMinutes(date, minutes) {
return dayjs(date).add(minutes, 'minutes').toDate()
}
날짜 fns
Date-fns는 JavaScript 객체를 조작하기 위한 일련의 함수를 제공합니다.자세한 내용은 date-fns 홈페이지에서 "Why date-fns?"로 스크롤하십시오.
- 로케일:개별적으로 가져올 수 있는 사용자 정의 데이터 파일
- ★★★★★★★★★★★★★★★★★:
Intl
컴패니언 제공됩니다
import {addMinutes} from 'date-fns'
function addMinutesDemo(date, minutes) {
return addMinutes(date, minutes)
}
js-Joda
js-Joda는 Java의 Three-Ten Backport의 JavaScript 포트이며, Java SE 8의 JSR-310 구현을 위한 기반입니다.java.time
패키지.Joda-Time 또는 Noda Time에 익숙한 경우 js-Joda에 필적합니다.
- 로케일:애드온 모듈을 통한 커스텀 데이터 파일
- 시간대:애드온 모듈을 통한 커스텀 데이터 파일
import {LocalDateTime, nativeJs, convert} from '@js-joda/core'
function addMinutes(date, minutes) {
return convert(
LocalDateTime.from(
nativeJs(date)
).plusMinutes(minutes)
).toDate()
}
가장 쉽게 해결할 수 있는 방법은 Javascript에서 날짜가 숫자에 불과하다는 것을 인식하는 것입니다.0
★★★★★★★★★★★★★★★★★」'Wed Dec 31 1969 18:00:00 GMT-0600 (CST)
. 것모든1
밀리초를 나타냅니다.값을 가져오고 해당 값을 사용하여 새 날짜를 인스턴스화하여 밀리초를 추가하거나 뺄 수 있습니다.그런 마음가짐이라면 꽤 쉽게 해낼 수 있어요.
const minutesToAdjust = 10;
const millisecondsPerMinute = 60000;
const originalDate = new Date('11/20/2017 10:00 AM');
const modifiedDate1 = new Date(originalDate.valueOf() - (minutesToAdjust * millisecondsPerMinute));
const modifiedDate2 = new Date(originalDate.valueOf() + (minutesToAdjust * millisecondsPerMinute));
console.log(originalDate); // Mon Nov 20 2017 10:00:00 GMT-0600 (CST)
console.log(modifiedDate1); // Mon Nov 20 2017 09:50:00 GMT-0600 (CST)
console.log(modifiedDate2); // Mon Nov 20 2017 10:10:00 GMT-0600 (CST)
원라이너 유틸리티 없음:
new Date(+new Date() + 60000*15) // +15 minutes
이것이 내가 하고 있는 일인데, 꽤 효과가 있는 것 같습니다.
Date.prototype.addMinutes = function(minutes) {
var copiedDate = new Date(this.getTime());
return new Date(copiedDate.getTime() + minutes * 60000);
}
그럼 이렇게 부르면 되겠네요.
var now = new Date();
console.log(now.addMinutes(50));
(ms)와 함께 날짜를 가져와 (30 * 60 * 1000)을 더하려면 현재 날짜 값을 얻어야 합니다.이것으로 (현재 날짜 + 30분)에 ms가 할당되었습니다.
console.log('with ms', Date.now() + (30 * 60 * 1000))
console.log('new Date', new Date(Date.now() + (30 * 60 * 1000)))
이대로는 간단하다.
let initial_date = new Date;
let added30Min = new Date(initial_date.getTime() + (30*60*1000));
ES6 버전은 다음과 같습니다.
let getTimeAfter30Mins = () => {
let timeAfter30Mins = new Date();
timeAfter30Mins = new Date(timeAfter30Mins.setMinutes(timeAfter30Mins.getMinutes() + 30));
};
다음과 같이 부릅니다.
getTimeAfter30Mins();
저는 이 답변의 많은 부분이 시간 여행 계산에 매우 필요한 창의적인 요소가 부족하다고 생각합니다.저는 30분간의 시간적 번역에 대한 해결책을 제시합니다.
(여기서 빈둥빈둥)
function fluxCapacitor(n) {
var delta,sigma=0,beta="ge";
(function(K,z){
(function(a,b,c){
beta=beta+"tT";
switch(b.shift()) {
case'3':return z('0',a,c,b.shift(),1);
case'0':return z('3',a,c,b.pop());
case'5':return z('2',a,c,b[0],1);
case'1':return z('4',a,c,b.shift());
case'2':return z('5',a,c,b.pop());
case'4':return z('1',a,c,b.pop(),1);
}
})(K.pop(),K.pop().split(''),K.pop());
})(n.toString().split(':'),function(b,a,c,b1,gamma){
delta=[c,b+b1,a];sigma+=gamma?3600000:0;
beta=beta+"im";
});
beta=beta+"e";
return new Date (sigma+(new Date( delta.join(':')))[beta]());
}
여기 제 원라이너가 있습니다.
console.log('time: ', new Date(new Date().valueOf() + 60000))
다음과 같이 할 수 있습니다.
let thirtyMinutes = 30 * 60 * 1000; // convert 30 minutes to milliseconds
let date1 = new Date();
let date2 = new Date(date1.getTime() + thirtyMinutes);
console.log(date1);
console.log(date2);
나는 그 주제가 너무 오래되었다는 것을 안다.하지만 아직 이게 필요한 디벨로퍼들이 있을 것 같아서 간단한 대본을 만들었어요.재밌게 봐주셨으면 좋겠습니다.
안녕하세요, 2020년입니다.이제 더 도움이 될 수 있을 것 같은 수정사항을 추가했습니다!
안녕하세요, 2022년입니다만, 몇 가지 문제를 수정하고, 방법과 기능에 대해 더 나은 이름을 붙이기 위해 다시 왔습니다.
function addTimeToDate(addedTime, date){
let generatedTime = date.getTime();
if(addedTime.seconds) generatedTime += 1000 * addedTime.seconds; //check for additional seconds
if(addedTime.minutes) generatedTime += 1000* 60 * addedTime.minutes;//check for additional minutes
if(addedTime.hours) generatedTime += 1000 * 60 * 60 * addedTime.hours;//check for additional hours
return new Date(generatedTime);
}
Date.prototype.addTime = function(addedTime){
return addTimeToDate(addedTime, this);
}
let futureDate = new Date().addTime({
hours: 16, //Adding one hour
minutes: 45, //Adding fourty five minutes
seconds: 0 //Adding 0 seconds return to not adding any second so we can remove it.
});
<button onclick="console.log(futureDate)">Travel to the future</button>
시간 계산에 관련된 문제를 처리하는 것으로 알려진 기존 라이브러리를 사용합니다.제가 요즘 제일 좋아하는 건 moment.js입니다.
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.js"></script>
<script>
var now = moment(); // get "now"
console.log(now.toDate()); // show original date
var thirty = moment(now).add(30,"minutes"); // clone "now" object and add 30 minutes, taking into account weirdness like crossing DST boundries or leap-days, -minutes, -seconds.
console.log(thirty.toDate()); // show new date
</script>
var add_minutes = function (dt, minutes) {
return new Date(dt.getTime() + minutes*60000);
}
console.log(add_minutes(new Date(2014,10,2), 30).toString());
30분을 '추가'하는 한 가지 방법은 두 번째 날짜 오브젝트(대부분 데모용)를 만들고 회의록을 다음과 같이 설정하는 것입니다.minutes + 30
할 수 30분 미만인 경우).4:45
로로 합니다.5:15
)
const first = new Date();
console.log("first date :", first.toString());
const second = new Date(first);
const newMinutes = second.getMinutes() + 30;
console.log("new minutes:", newMinutes);
second.setMinutes(newMinutes);
console.log("second date:", second.toString());
나처럼 게으른 사람들을 위해:
킵의 답변(위쪽에서)은 "enum"을 사용하여 동일한 대상을 조작하는 커피스크립트로 작성됩니다.
Date.UNIT =
YEAR: 0
QUARTER: 1
MONTH: 2
WEEK: 3
DAY: 4
HOUR: 5
MINUTE: 6
SECOND: 7
Date::add = (unit, quantity) ->
switch unit
when Date.UNIT.YEAR then @setFullYear(@getFullYear() + quantity)
when Date.UNIT.QUARTER then @setMonth(@getMonth() + (3 * quantity))
when Date.UNIT.MONTH then @setMonth(@getMonth() + quantity)
when Date.UNIT.WEEK then @setDate(@getDate() + (7 * quantity))
when Date.UNIT.DAY then @setDate(@getDate() + quantity)
when Date.UNIT.HOUR then @setTime(@getTime() + (3600000 * quantity))
when Date.UNIT.MINUTE then @setTime(@getTime() + (60000 * quantity))
when Date.UNIT.SECOND then @setTime(@getTime() + (1000 * quantity))
else throw new Error "Unrecognized unit provided"
@ # for chaining
IsoString 버전은 다음과 같습니다.
console.log(new Date(new Date().setMinutes(new Date().getMinutes() - (30))).toISOString());
기타 솔루션:
var dateAv = new Date();
var endTime = new Date(dateAv.getFullYear(), dateAv.getMonth(), dateAv.getDate(), dateAv.getHours(), dateAv.getMinutes() + 30);
또 다른 선택사항이 있는데, 이렇게 썼어요.
필요한 날짜 처리만 하면 과잉 살상입니다만, 원하는 대로 할 수 있습니다.
날짜/시간 형식, 날짜 연산(날짜 부분 추가/감산), 날짜 비교, 날짜 구문 분석 등을 지원합니다.자유롭게 오픈 소스로 제공되고 있습니다.
간단히 이 코드를 사용할 수 있습니다.momnet
★★★★★★★★★★★★★★★★★★:
console.log(moment(moment()).add(30,"minutes").format('MM/DD/YYYY hh:mm:ss'));
var myDate= new Date();
var MyNewDate = new Date
(myDate.getFullYear(),myDate.getMonth(),myDate.getDate(),myDate.getMinutes()+10,01,01)
언급URL : https://stackoverflow.com/questions/1197928/how-to-add-30-minutes-to-a-javascript-date-object
'programing' 카테고리의 다른 글
utf8과 latin1의 차이점 (0) | 2022.09.18 |
---|---|
jboss 서버를 시작하는 중 오류 발생 (0) | 2022.09.18 |
Vue JS 이벤트 버스 데이터가 이벤트 범위를 벗어나 작동하지 않음 (0) | 2022.09.18 |
panda apply()에서 여러 열을 반환합니다. (0) | 2022.09.18 |
MySQL 서버가 60초 만에 사라졌습니다. (0) | 2022.09.18 |