Рассчитайте время, оставшееся до настоящего момента и до точного часа следующего дня. - PullRequest
0 голосов
/ 03 июня 2019

Какой самый краткий и эффективный способ получить Javascript минуты, оставшиеся до сегодняшнего дня и до следующего дня в 01:00 (утра)?

Затем, когда текущее время наступает после 01:00, я начинаю вычислять разницу до следующего.

Ответы [ 4 ]

3 голосов
/ 03 июня 2019

в javascript, указанная дата может быть предоставлена ​​следующим образом

var date1 = new Date('June 6, 2019 03:24:00');

или может быть указана следующим образом

var date2 = new Date('2019-6-6T03:24:00');

javascript может изначально вычитать 2 даты

console.log(date1 - date2);
//expected 0;

при использовании этого метода будет выводиться разница в датах в миллисекундах, чтобы получить минуты, которые вы хотите разделить, на 60000;

, поэтому

var futureTime = new Date('2019-06-06T07:24:00');
//there must be a 0 infront of 1 digit numbers or it is an invalid date
var now = new Date();
var difference = (futureTime - now) / 60000;
//get minutes by dividing by 60000
//doing Date() with no arguments returns the current date

прочитайте оjavascript Date объект здесь для получения дополнительной информации https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

2 голосов
/ 03 июня 2019
let now = new Date();
let next1am = new Date();
next1am.setHours(1, 0, 0, 0); // same as now, but at 01:00:00.000
if (next1am < now) next1am.setDate(next1am.getDate() + 1); // bump date if past
let millisecondDiff = next1am - now;
let minuteDiff = Math.floor(millisecondDiff / 1000 / 60);
0 голосов
/ 03 июня 2019

Вы можете рассчитать по чистому JavaScript:

let today = new Date();
let [y,M,d,h,m,s] = '2019-06-04 05:00:11'.split(/[- :]/);
let yourDate = new Date(y,parseInt(M)-1,d,h,parseInt(m)+30,s);
let diffMs = (yourDate - today);
let diffDays = Math.floor(diffMs / 86400000); // days
let diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
let diffMins = (diffDays * 24 * 60) 
               +  (diffHrs *60) 
               +  Math.round(((diffMs % 86400000) % 3600000) / 60000); // The overall result
                                                                       // in minutes

Кроме того, избегайте использования встроенного синтаксического анализатора для любого нестандартного формата, например в Safari new Date («2019-04-22 05:00:11») возвращает недопустимую дату. Вы действительно не должны даже использовать if для стандартизированных форматов, поскольку вы все равно получите неожиданные результаты для некоторых форматов. Почему Date.parse дает неверные результаты?

0 голосов
/ 03 июня 2019

вы можете moment.js здесь

var current = new Date()
var end = new Date(start.getTime() + 3600*60)// end time to calculate diff

var minDiff = end - start; // in millisec
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...