두 날짜 사이의 시간 차이를 초 단위로 가져옵니다.


149

두 날짜 사이의 차이를 초 단위로 얻으려고합니다. 논리는 다음과 같습니다.

  • 초기 날짜를 설정하십시오.
  • 초기 날짜에 몇 초를 더한 최종 날짜를 설정하십시오 (예를 들어 15라고 가정하십시오)
  • 그 둘 사이의 차이를 얻습니다 (초 단위)

내가 날짜와 함께 그것을하는 이유는 최종 날짜 / 시간이 다른 변수에 달려 있기 때문에 결코 같지 않으며 (사용자가 얼마나 빨리 수행하는지에 달려 있음) 다른 일에 대한 초기 날짜도 저장합니다.

나는 이런 식으로 노력하고있다 :

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

문제는 결코 올바른 차이를 얻지 못한다는 것입니다. 나는 24 * 60초로 나를 떠날 수있는 나누기를 시도 했지만 결코 제대로 얻지 못했습니다. 내 논리에 어떤 문제가 있습니까? 꽤 늦었을 때 바보 같은 실수를 저지르고 있지만 작동하지 못하게 귀찮게합니다. :)


2
작업 순서가 핵심입니다.
Dylan Cross

1
타임 스탬프를 만들고 15 초를 더한 다음 그 차이가 몇 초인지 확인하고 싶습니다. 나는 차이가 될 확률이 높다고 말하고 싶습니다 .... 기다립니다 .... 15 초?
adeneo


1
나는 정말로 당신이하려는 일을 이해하지만 (내 생각에) 유닉스 시간 인 new Date ()를 가져 와서 15 초를 더하고 차이를 즉시 확인하면 차이는 15 초가됩니다. (계산하는 데 밀리 초를 뺀 값), 그러나 당신의 의도는 미래에 이것을 어떻게 든 비교할 것이라고 생각합니다.
adeneo

1
나는 실제로 그것을 얻지 못하고, 내 요점을 증명하기 위해, 위의 예제에 맞는 FIDDLE 이 있습니다. 사용자가 무언가를 수행하는 데 걸린 시간을 파악하려는 경우 일반적으로 사용자가 작업을 시작할 때 타임 스탬프와 사용자가 작업을 완료 한 타임 스탬프를 가져 와서 비교 한 후 소요 된 시간을 알 수 있습니다 . 도대체 15 초란 무엇입니까?
adeneo

답변:


283

코드

var startDate = new Date();
// Do your operations
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;

또는 (endDate - startDate) / 1000typescript를 사용하지 않는 한 주석에서 지적한 것처럼 더 간단 합니다.


설명

객체 의 getTime()메소드 를 호출 Date한 다음 간단히 빼고 1000으로 나눕니다 (원래 밀리 초이므로). 또한 getDate()메소드를 호출 할 때 실제로 메소드 호출에서 얻은 에포크 시간과 달리 1에서 31 사이의 정수 (0을 기준으로하지 않음)로 가져옵니다 getTime(). 1970 년 1 월 1 일 00:00 이후 밀리 초 수를 나타냅니다.


란트

날짜 관련 작업이 무엇인지에 따라 개발자가 훨씬 쉽게 사용할 수 있도록 date.js 또는 moment.js 와 같은 라이브러리를 통합하는 데 투자하고 싶을 수도 있지만 이는 개인적인 취향의 문제 일뿐입니다.

예를 들어 moment.js에서 우리 moment1.diff(moment2, "seconds")는 아름다운 것을 할 것 입니다.


이 답변에 유용한 문서


14
getTIme 필요가 없습니다 .- 연산자가 Dates 를 Numbers로 강제 변환 하므로 Dates를 서로 뺄 수 있습니다 .
RobG

3
getTime은 typescript를 사용하는 경우 필요합니다. 숫자 나 열거 형 이외의 요소 사이에서 산술 연산을 허용하지 않습니다.
zaffaste

당신은 운영자가 어떤 경우에 호출 할 것 .valueOf()입니다 사용할 수 있습니다 -...
Heretic Monkey

1
시간 / 분의 시차도 필요하다면 어떻습니까? 60 또는 여러 배로 생각해야합니까? @Juan
gumuruh

개별 질문으로 새로운 의혹을 추가하십시오. 그러나이 질문은 복제본으로 마감 될 것이므로 여기를보십시오 stackoverflow.com/questions/1322732/…
Juan Cortés

5

new Date().getTime()타임 스탬프를 얻는 데 사용할 수 있습니다 . 그럼 당신은 끝 사이의 차이를 계산하고 시작하고 마침내 타임 스탬프 변환 할 수 있습니다 ms로를 s.

const start = new Date().getTime();
const end = new Date().getTime();

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);

4
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();

var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>

1

아래 코드는 초의 시간 차이를 제공합니다.

var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second

alert(timeDiffInSecond );

0

고급 프로그래밍 언어의 전용 기능을 사용해보십시오. JavaScript는 .getSeconds();여기에 적합합니다 :

var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds(); 

var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds(); 

alert(specifiedTimeSeconds-currentTimeSeconds);

0

momentjs를 사용하여 지금과 10 분 후의 시차

let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');

let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.