Каким будет код для определения разницы во времени между двумя разными временами, которые находятся в 12-часовом формате с использованием javascript. Я использую эти два поля времени в моем динамическом представлении сетки.
var gridNew = document.getElementById("<%= Gridview1.ClientID %>");
if (gridNew.rows.length > 0) {
for (i = 0; i < gridNew.rows.length - 2; i++) {
var frombox = document.getElementById("Gridview1_txtFrom_" + (i));
var tobox = document.getElementById("Gridview1_txtTo_" + (i));
if(frombox.value<=tobox.value){
alert("Enter valid time set");
return false;
4 ответа
Вот как вы можете получить разницу во времени в миллисекундах между двумя настраиваемыми датами.
Math.abs(new Date(firstDateString).getTime() - new Date(secondDateString).getTime());
Если у вас есть проблемы с синтаксическим анализом / преобразованием в Date
, рассмотрите возможность использования библиотеки, такой как date.js или moment.js.
С момента вы можете сделать что-то вроде этого:
var diff = moment('3:30','HH:mm').diff(moment('3:20','HH:mm'));
Если вам нужно утро / вечер:
var diff = moment('3:30 pm','HH:mm a').diff(moment('3:20 am','HH:mm a'));
Вот jsfiddle
Времена в JS могут быть проблемой при кроссбраузерности, и любой, кому приходилось отлаживать странное кроссбраузерное поведение, может это подтвердить. Я узнал, как никогда раньше, когда я хочу делать что-либо с датами в JS, задействует библиотеку moment.js.
Поначалу я сопротивлялся, так как думал, что почти все смогу сделать сам и сам покатайся. Это кубинская сигара, и никакие домашние прогулки не могут покрыть все необходимые инструменты.
Я не скажу вам, как исправить, просто дам вам инструмент ...
Наслаждайтесь!
Вы не указали формат времени, кроме как "12-часовой формат". Алгоритм состоит в том, чтобы проанализировать и преобразовать их в общие единицы, например, секунды, найти разницу, а затем отформатировать ее обратно в любые подходящие единицы.
Поэтому, если время указано в формате h: m: s a / p, например «9:42:15 am», и вы хотите получить результат в аналогичном формате, тогда могут помочь следующие функции.
/* Convert time in h:m:s a/p format to seconds
** Seconds component is optional, h:m is OK
** Tolerates space before am/pm, leading and trailing whitespace
** Doesn't validate string
**
** @param {string} s - time to parse
** @returns {number} time converted to seconds.
*/
function hmsToSeconds(s) {
var b = s.match(/\d+/g);
var am = /am\s*$/i.test(s);
return ((b[0] % 12) + (am? 0:12))*3600 + (b[1]*60) + (+b[2]||0);
}
/* Convert seconds to time in h:mm:ss format
** Maintains sign of input (+/-).
**
** @param {number} s - seconds to convert
** @returns {string} seconds converted to h:mm:ss.
*/
function secToHMS(s) {
function z(n){return (n<10? '0' : '') + n}
var sign = s < 0? '-' : '';
s = Math.abs(s);
return sign + (s/3600 | 0) + ':' + z((s%3600 / 60 |0)) + ':' + z(s%60);
}
function getTimeDifference(t0, t1) {
return secToHMS(hmsToSeconds(t1) - hmsToSeconds(t0));
}
document.write(getTimeDifference('11:32 am','12:38:51pm'));
Попробуйте этот простой плагин, чтобы узнать разницу во времени.
https://github.com/gayanSandamal/good-time
Импортировать метод goodTimeDiff из good-time.js в свой проект
import {goodTimeDiff} from './scripts/good-time.js'
Объявить объект, чтобы задать настройки, как показано ниже. let settings = {}
Теперь присвоить значения времени объявленной объектной переменной. * время должно быть в стандартном формате и должно быть строкой! * 'from' не является обязательным, значением по умолчанию будет текущее время браузера.
let settings = {
'from': '2019-01-13T00:00:29.251Z',
'to': '2018-09-22T17:15:29.251Z'
}
Теперь вызываем метод goodTimeDiff () и передаем переменную объекта настроек в качестве параметра.
goodTimeDiff(settings)
Наконец, назначьте метод любой переменной, которую хотите.
let lastCommentedTime = goodTimeDiff(timeSettings)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.