날짜에 10 초 추가


답변:


416

있다 setSeconds아니라 방법 :

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

다른 Date 기능 의 목록을 보려면 MDN을 확인하십시오


setSeconds 랩 어라운드 케이스를 올바르게 처리합니다.

var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05


3
내 Nodejs 설치는 d.getSeconds ()를 문자열로 반환합니다. 나는 이것을 (+ d.getSeconds ())로 바꿔야했다. 단항 더하기는 문자열을 숫자로 변환한다. 아마도 더 분명 조금 1 * d.getSeconds을 () 것
tqwhite

1
@tqwhite 는 노드로 typeof new Date().getSeconds()반환 'number'되므로 노드가 오래된 버전이 아닌 경우 다른 문제가있을 수 있습니다.
zzzzBov

2
일을 시도 d.setSeconds(d.getSeconds() - 92);하고 당신은 2'32 "대신 1'32의 차이"로 끝날 것이다. 그러나 해결책은 new Date(d.getTime() - 92*1000);작동합니다!
Rafalon

1
문서화되지 않은 동작 (setSeconds (70)이 1 분씩 증가하고 초를 10으로 설정 함)에 의존하는 것은 일반적으로 나쁜 습관처럼 보입니다. Date.getTime () + <추가 할 밀리 초 수>를 가리키는 (현재 다음) 답변은 의도되고 지원되는 접근 방식 인 것으로 보이며 각 문서의 미묘한 뉘앙스에 대한 백과 사전 지식없이 다른 언어에서 온 대부분의 프로그래머에게 분명합니다. 특정 JavaScript 엔진.
Tom Dibble

1
기록 시간대에서 문제가 발생할 수 있습니다. @ Ron 's answer 아래의 의견 : stackoverflow.com/a/17267937/198797을 참조하십시오 . 아마도 일반적인 시나리오는 아니지만 문제입니다.
tsemer

110
// let timeObject = new Date();
// let seconds = 10 * 1000; // 10000 milliseconds
timeObject = new Date(timeObject.getTime() + seconds);

33
... 그리고 10000을 추가 한 이유는 자바 스크립트 날짜가 밀리 초 단위로 작동하기 때문입니다. 즉 10000 = 10 * 1000
psiphi75

1
timeObject를 숫자로 변환하기 때문에 timeObject 앞에 +가 필요합니다. 그래서 Ron의 답변에서 timeObject.getTime ()과 같습니다
James

1
JavaScript는 너무 불쾌합니다. 이 초기 API는 약간 혼란스러워합니다.
usr

62

우리 사이의 성능 미치광이를 위해.

getTime

var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);

5,196,949 Ops / sec, 가장 빠른


setSeconds

var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);

2,936,604 Ops / sec, 43 % 느림


moment.js

var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');

22,549 Ops / sec, 100 % 느림


아마도 가장 인간이 읽을 수는 없지만 (나쁜 것은 아니지만) 가장 빠른 방법 :)

jspref 온라인 테스트


3
자세한 내용은 매우 유용합니다. :)
Dean

58
const timeObject = new Date(); 
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);

또한 JavaScript Date 객체에 30 분을 추가하는 방법을 참조하십시오.


7
여기에있는 모든 잘못된 답변 중에서 이것이 올바른 답변입니다.
Cory Mawhorter

네, 정답입니다. 불행히도 Google은 "자바 스크립트 날짜 추가 초"를 검색하고 가장 투표가 많은 답변이 잘못된 경우이 질문을 참조합니다.
Philipp Gächter

2
선택한 답변 (현재 @zzzzBov에서)이 무엇을 잘못했는지 설명해 주시겠습니까? 그것은 나를 위해 작동합니다.
tsemer

1
@tsemer, 언뜻보기에 zzzzBov의 대답이 옳지 않다고 생각했습니다. 범위를 벗어난 경우 분 값을 업데이트 할 것이라고 생각하지 않았기 때문입니다. 그러나 귀하의 "도전"으로 인해 MDN을 검토 한 결과 답변이 옳다는 것을 확인했습니다. :)
Ron

1
@tsemer Historical TimeZones 지원 (예 : Internet Explorer 11)을 사용하여 웹 브라우저를 사용해보십시오. 또한 시스템 TimeZone을 "Asia / Yekaterinburg"로 설정하십시오.var timestamp = Date.parse("2011-03-26T20:59:59.999Z"); var d = new Date(timestamp); d.setSeconds(d.getSeconds() + 10); console.log(d.getTime() - timestamp);
4esn0k



4

몇 가지 새로운 변종이 있습니다.

  1. var t = new Date(Date.now() + 10000);
  2. var t = new Date(+new Date() + 10000);

2

Date()자바 스크립트 의 객체는 그렇게 똑똑하지 않습니다.

초를 추가하는 데 집중하면 부드럽게 처리하는 것처럼 보이지만 X 초를 추가하려고하면 X 분 및 시간 등을 같은 Date객체에 추가하여 문제가 발생합니다. 그래서 나는 단순히 setSeconds()방법을 사용하고 내 데이터를 초로 변환 하는 것으로 돌아 갔습니다 (잘 작동했습니다).

누구나 Date()모든 set 메소드를 사용하여 전역 객체에 시간을 추가하는 것을 보여줄 수 있고 마지막 시간이 올바르게 나오고 싶다면 그것을보고 싶지만 주어진 Date()객체 에서 한 번에 하나의 set 메소드를 사용해야한다는 의미가 있습니다. 그것들을 섞으면 엉망이됩니다.

var vTime = new Date();

var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );

vTime.setSeconds(iSecondsToAdd);

다음은 도움이 될만한 추가 문서입니다 .


2
  1. setSeconds오늘부터 초를 가져 와서 10 초만 추가 하면 방법을 사용할 수 있습니다

    var today = new Date();
    today.setSeconds(today.getSeconds() + 10);
  2. 새 날짜에 10 * 1000 밀리 초를 추가 할 수 있습니다.

    var today = new Date(); 
    today = new Date(today.getTime() + 1000*10);
  3. 당신은 사용할 수 있습니다 setTime:

    today.setTime(now.getTime() + 10000)

1

이 방법으로 시도하십시오.

Date.prototype.addSeconds = function(seconds) {
  var copiedDate = new Date(this.getTime());
  return new Date(copiedDate.getTime() + seconds * 1000);
}

그냥 전화하고 할당 new Date().addSeconds(10)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.