Какой простой способ конвертировать время между часами утра / вечера и временем 24 часа в JavaScript - PullRequest
4 голосов
/ 03 февраля 2009

Я играл с jquery и столкнулся с проблемой времени. У меня есть три поля выбора времени ввода, один для часов, один для минут и один для меридиана. Мне нужно преобразовать это время в 24-часовой формат строки, а затем вставить его в скрытый ввод.

var time = "";
time += $("#EventCloseTimeHour option:selected").text();
time += ":" + $("#EventCloseTimeMin option:selected").text() + ":00";
time += " " + $("#EventCloseTimeMeridian option:selected").text();

$("#ConditionValue").val(time);         

Это дает мне «1:30:00 вечера», где мне нужно «13:30:00». Какие-нибудь быстрые подсказки времени javascript?

Ответы [ 5 ]

8 голосов
/ 03 февраля 2009

Пример tj111 предложения:

$("#ConditionValue").val(
    (
        new Date(
            "01/01/2000 " + 
            $("#EventCloseTimeHour option:selected").text() +
            $("#EventCloseTimeMin option:selected").text() + ":00" +
            " " +
            $("#EventCloseTimeMeridian option:selected").text()
        )
    ).toTimeString().slice(0,8))
;

Или вы можете использовать:

hour = hour %12 + (meridian === "AM"? 0 : 12);
hour = hour < 10 ? "0" + hour : hour;  
1 голос
/ 03 февраля 2009
var time = "";
var hour = Number($("#EventCloseTimeHour option:selected").text())%12 + ($("#EventCloseTimeMeridian option:selected").text() == 'PM'?12:0)) ;


time +=("00"+String(hour)).slice(-2)+":"+ $("#EventCloseTimeMin option:selected").text();

Ключом к этому решению является использование условного оператора "a? B: c", который переводится как "если a, то b, иначе c"

1 голос
/ 03 февраля 2009

Вам следует изучить нативные JavaScript Date Object методы.

0 голосов
/ 04 июля 2017

Просто чтобы добавить простой ответ JS, следующий форматирует время на основе длины исходной строки. Если h: mm возвращает HH: mm, если h: mm: ss возвращает HH: mm: ss.

Если всегда требуется ЧЧ: мм: сс, просто добавить значения по умолчанию «00», если они отсутствуют в исходной строке.

// Change time in h:mm:ss ap to  HH:mm:ss time
// If time missing seconds, returns HH:mm
function timeToHHmm(time) {
  var nums = time.match(/\d+/g);
  var am   = /am/i.test(time);
  nums[0] = ('0' + ((nums[0]%12) + (am? 0 : 12))).slice(-2);
  // If HH:mm:ss required, use following line instead of last
  // return nums.join(':') + (nums.length == 2? ':00' : '');
  return nums.join(':');
}

// Some tests
['2:45am',     // hh:mm only
 '5:15:45pm',  // hh:mm:ss
 '5:15:45 pm', // space before am/pm
 '05:15:45 pm',// leading zero on hour
 '12:02am',
 '12:02 pm',
 '12:02:00am'
 ].forEach(function(time) {
  console.log(time + ' => ' + timeToHHmm(time));
});
0 голосов
/ 04 февраля 2009

Я получил это с ответами нескольких людей.

var time = "";
var hour = Number($("#EventCloseTimeHour option:selected").text());
if($("#EventCloseTimeMeridian option:selected").text() == 'PM'){
    hour = String((hour%12) + 12);
}
hour = hour < 10 ? "0" + hour : hour;
time +=hour+":"+ $("#EventCloseTimeMin option:selected").text() + ":00";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...