Рассматривали ли вы создание даты в JavaScript и затем обработку ее как объекта?
Он работает в Chrome и Safari, но не работает в Firefox или Internet Explorer
Это было протестировано в Firefox, IE11 и Chrome:
function createDate(year, month, day, hour, minute, offset) {
// adjusts for time zone
var nudgeHours = 0;
try {
nudgeHours = -1 * parseInt(offset.substring(3), 10); // chomp after 'GMT'; fix offset for GMT
} catch(e) {
console.warn(e);
}
// construct and return a GMT date, making sure to accommodate for milliseconds in our nudgeHours
return new Date(Date.UTC(year, month - 1, day, hour, minute) + (nudgeHours*60*60*1000));
}
Тогда вы можете манипулировать этой датой так, как вам нужно, не беспокоясь о разборе различий между браузерами.
console.log("Before: " + timeString);
console.log("After: " + createDate(Year, Month, Day, Hour, Minute, Timezone));
Выход:
Before: 2020-08-7 04:45:00 GMT-5
After: Fri Aug 07 2020 05:45:00 GMT-0400 (Eastern Daylight Time)
Так что я пытаюсь исправить таймер обратного отсчета JavaScript
Без логики таймера трудно понять, где происходит подсчет (и, следовательно, трудно понять, почему был выбран вышеуказанный формат), но обработка его как объекта Date(...)
также должна снизить вероятность взлома любого не стандартная дата арифметика.
В качестве предостережения, GMT-5
немного подозрительно отформатирован. Например, IST равен +5:30
, поэтому nudgeHours
предполагает, что GMT-5
- это пользовательский формат, против которого уже был закодирован таймер обратного отсчета, а не стандартизированный формат. К этому моменту IST должен быть GMT+5.5
, чтобы вышеуказанная логика продолжала работать правильно.