MateiralizeCSS Timepicker: Как найти разницу во времени между двумя таймерами, с пробелом до AM / PM, с помощью momentJS? - PullRequest
0 голосов
/ 28 июня 2018

Как я могу найти разницу во времени между двумя сборщиками времени в MaterializeCSS, а также иметь пробел до AM / PM и momentJS? Я хочу пробел до AM / PM, потому что это позволит мне использовать его на международном уровне.

Пример:

Timepicker 1 = 8:00 AM Timepicker 2 = 5:00 PM

Найти: Timepicker 2 - Timepicker 1 в формате ЧЧ: мм в формате

Мы пробовали без пробелов, и это не удалось. Затем мы попытались с пробелами, и это сработало, но мы не можем изменить свойство format компонента Timepicker MaterializeCSS. Мы не используем формат «ЧЧ: мм: сс» (24-часовой формат). Мы хотим использовать формат «ЧЧ: мм т»

Вот наша попытка:

    $('#tTimeEntryStarted, #tTimeEntryEnd').pickatime({
        default: '00:00', // Set default time: 'now', '1:30AM', '16:30'
        fromnow: 0,       // set default time to * milliseconds from now (using with default = 'now')
        twelvehour: true, // Use AM/PM or 24-hour format
        donetext: '', // text for done-button
        //cleartext: 'Clear', // text for clear-button
        min: undefined,
        max: undefined,
        canceltext: '', // Text for cancel-button,
        container: undefined, // ex. 'body' will append picker to body 
        autoclose: true, // automatic close timepicker
        ampmclickable: true, // make AM PM clickable
        aftershow: function () { } //Function for after opening timepicker
    });

Добавлены следующие работы в качестве пробела:

 console.log(moment( new Date(moment(new Date()).format('MM/DD/YYYY') + " " + $("#tTimeEntryEnd").val().replace("AM"," AM").replace("PM"," PM")) -  new Date(moment(new Date()).format('MM/DD/YYYY') + " " + $("#tTimeEntryStarted").val().replace("AM"," AM").replace("PM"," PM")), 'HH:mm'))

Следующее не работает, но мы хотим что-то подобное, чтобы мы могли использовать это на международном уровне (например, замена «AM» на «AM» не будет работать в Китае, поскольку у них есть что-то еще для AM):

 console.log(moment( new Date(moment(new Date()).format('MM/DD/YYYY') + " " + $("#tTimeEntryEnd").val()) -  new Date(moment(new Date()).format('MM/DD/YYYY') + " " + $("#tTimeEntryStarted").val()), 'HH:mm'))

Следующие два не будут работать. так как до утра нет места:

new Date("2018/1/1 " + moment($("#tTimeEntryEnd").val(), 'hh:mm a'))
new Date("2018/1/1 8:30AM")

Следующее работает, потому что до AM есть пробел, но мы не можем изменить формат выбора времени MaterializeCSS как ЧЧ: мм T:

new Date("2018/1/1 8:30 AM")

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете сначала создать moment с заданным временем с помощью

moment("8:00 AM", 'hh:mm a')

и то же самое для другого / конечного времени. А затем возьмите разницу между ними в hours или minutes, например

var startTime = moment("8:00AM", 'hh:mm a'),
     endTime = moment("5:00PM", 'hh:mm: a');
    
 console.log("in hours", endTime.diff(startTime, 'hours'))
 
 console.log("in minutes", endTime.diff(startTime, 'minutes'))
<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script>
...