Дата дня (24 часа) минус дата - PullRequest
0 голосов
/ 18 марта 2020

Мне нужно забрать день с полученной даты, то есть 24 часа минус 23:47:16 Мне нужно получить 12:44. Я пытался разбить переменную даты на строку и убрать ее, но я просто не могу найти алгоритм, может быть, это можно сделать в данный момент, скажите, пожалуйста,

24: 00: 00 (минус ) (const date или const formattedTime) = ...

(в моем примере 24:00:00 - 23:47:16 = 12:44)

    const date1: any = new Date(Date.now());
    const date2: any = new Date(marked_deletion_at);

    const diffTime = Math.abs(date2 - date1);

    const date = new Date(diffTime);
    console.log(date) // Thu Jan 01 1970 23:47:16 GMT+0300
    const hours = date.getHours();
    const minutes = '0' + date.getMinutes();
    const seconds = '0' + date.getSeconds();

    // Will display time in 10:30:23 format
    const formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
    console.log(formattedTime) // 23:47:16

Ответы [ 3 ]

0 голосов
/ 19 марта 2020

Если вы просто хотите вычесть время в формате h: mm: ss из 24:00:00, затем преобразовать в некоторую общую базу (например, секунды), вычесть, а затем преобразовать обратно в h: mm: ss, например

// Convert time in h:mm:ss format to seconds
function toSecs(time) {
  let b = time.split(':'); 
  return b[0]*3600 + b[1]*60 + b[2]*1;
}

// Convert seconds to h:mm:ss format
function toTime(secs) {
  return (secs/3600 | 0) + ':' +
    ('' + ((secs%3600)/60 |0)).padStart(2, '0') + ':' +
    ('' + (secs%60)).padStart(2, '0');
}

// Time to midnight tonight
let z = n => (n<10?'0':'') + n;
let now = new Date();
let time = now.getHours() + ':' +
           z(now.getMinutes()) + ':' +
           z(now.getSeconds());
console.log('Current time: ' + time);
console.log('To midnight : ' + toTime(8.64e4 - toSecs(time)))

Обратите внимание, что функции не обрабатывают отрицательные числа.

0 голосов
/ 19 марта 2020

Попробуйте это:

var date1 = moment("2020-03-19 23:47:16");
var date2 = moment("2020-03-19 24:00:00");

var hours = date2.diff(date1, "hours");
var mins = moment
  .utc(moment(date2, "HH:mm:ss").diff(moment(date1, "HH:mm:ss")))
  .format("mm");
var seconds = moment
  .utc(moment(date2, "HH:mm:ss").diff(moment(date1, "HH:mm:ss")))
  .format("ss");

console.log(hours);
console.log(mins);
console.log(seconds);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
0 голосов
/ 18 марта 2020

Вы можете сделать с моментом .diff метод

const datetime = '2020-02-20 23:47:16';
const your_time  = moment(datetime);
const close_time = moment(datetime).endOf('day')
let h = close_time.diff(your_time,'hours')
let m = close_time.diff(your_time,'minutes')

console.log(h+':'+m)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...