Проблема с форматированием времени javascript, когда час равен «12»

У меня есть PDF-форма, которую нужно заполнить либо в электронном виде, либо с помощью старой доброй ручки. Таким образом, он включает в себя вычисления времени с помощью «Time In» и «Time Out». Для упрощения форма включает варианты выбора соответственно «до полудня» или «после полудня». Видеть образец ввода формы

Итак, я думаю, что придумал отличный способ, при котором при электронном использовании я могу позволить пользователю вводить время в формате «h: MM» и объединять выбор «am» или «pm», помещая результат в скрытый поле с форматом "h: MM tt" и выполнение моего расчета времени соответственно. Результат в этом новом скрытом поле отлично работает во все времена, кроме «12: xx». Когда вы выбираете «pm», результат concat становится «0:00 am», а если вы выбираете «am», результатом становится «12:00 pm». Я не могу понять, как с этим бороться. Вот код, который я использую для создания результата в скрытом поле:

//format for inputted time
var TimeFormat = "h:MM";
// field names
var str1Field = "TimeIn"
var str2Field = "TimeInTT"
// get field values
var str1 = this.getField(str1Field).value;
var str2 = this.getField(str2Field).value;
// concat strings if there is data
if (str1 != "" && str2 != ""){
var res = (TimeFormat, str1) + " " + str2;
event.value = res;
}

«TimeIn» - это поле времени «h: MM», а «TimeIn TT» - это «am» или «pm». Любая помощь с этим приветствуется. Может есть способ лучше сделать? Спасибо.

это должен быть hh:MM ??

Avezan 09.06.2018 01:47
(TimeFormat, str1) + " " + str2 эквивалентен просто str1 + " " + str2 - см. оператор запятой
Barmar 09.06.2018 01:49

Я пробовал формат чч: ММ, он просто показывает начальный ноль, но не решает проблему.

Bobby Jones 11.06.2018 18:00

TimeFormat был просто попыткой решить проблему, я согласен, что это не нужно. Просто хватаюсь за соломинку.

Bobby Jones 11.06.2018 18:00

В моем исследовании кажется, что JavaScript автоматически обрабатывает 12:00 как PM, а чтобы получить полночь, вы должны использовать 0:00 AM. Это будет очень запутать моих пользователей.

Bobby Jones 11.06.2018 18:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение своей проблемы. Напомним, проблема заключалась в том, что я пытался объединить поле, отформатированное как «h: MM», с помощью радиокнопки, предоставляющей либо «am», либо «pm», и вывод результата в поле, отформатированное как «h: MM tt». ", указанный выше JavaScript будет работать все время, кроме полудня (12:00) и полуночи. (12:00 утра). После нескольких часов попыток сочетания разных вещей, используя

event.value = res.replace("12:00", "0:00");

дал мне желаемый результат. Опять же, это было проблемой только при вычислении поля, отформатированного как «h: MM tt». Если бы это было просто текстовое поле, проблем не было бы. Однако мне нужно, чтобы это было временное поле для дополнительных расчетов времени. Итак, готовый скрипт после очистки выглядит так:

 // field names
 var str1Field = "Day1Pd1TimeIn" //Text Field
 var str2Field = "Day1Pd1TimeInPeriod" //Radio Button
 // get field values
 var str1 = this.getField(str1Field).value;
 var str2 = this.getField(str2Field).value;
 // concat strings if there is data
 if (str1 != "" && str2 != "Off")
 {
 var res = str1 + " " + str2;
 event.value = res.replace("12:00", "0:00");
 }

Может быть, это кому-то поможет в будущем.

Другие вопросы по теме