#javascript #momentjs
#javascript #momentjs
Вопрос:
Как мне преобразовать часовой пояс сервера по умолчанию, который установлен в date_default_timezone_set('Asia/Dubai');
соответствии с местным временем пользователя. Это значение даты "created_date":"2020-11-11 17:20:44"
и времени, которое я получаю от сервера. Какие изменения мне нужно добавить ниже, чтобы получить местное время пользователя?
getTimeFormat(date) {
return moment(date).format("hh:MM A");
}
Комментарии:
1. И что именно вы ожидаете вместо этого? Если это 24-часовое время, а не 12-часовое, пожалуйста, ознакомьтесь с документацией .
hh
для 12-часового часа,HH
для 24-часового. Если уcreated_date
самого нет правильного часового пояса, то что вы пытались исправить в часовом поясе?2. Извините, я обновил свой вопрос. О, так что, если я получаю дату и время таким образом, то невозможно преобразовать его в местное время пользователя, верно? Не могли бы вы показать мне пример правильного способа сделать это? @user4642212
Ответ №1:
Вам нужно будет использовать часовой пояс moment.
const created_date = "2020-11-11 17:20:44";
// take the date and create a moment using its local timezone
const dubs = moment.tz(created_date, "Asia/Dubai");
// now convert to local
const local = dubs.local().format("hh:mm A");
console.log(local);
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>
Также MM
месяц, а не минута, которая mm
другим вариантом было бы сначала отформатировать эту строку как правильную строку даты и времени ISO, чтобы она была 2020-11-11T17:20:44.000 04:00
( 04:00
здесь указано, что это время находится в местном часовом поясе Дубая, т. Е. На 4 часа Раньше UTC):
const isoDate = "2020-11-11T17:20:44.000 04:00";
const date = new Date(isoDate);
console.log(`${date.getHours()}:${date.getMinutes()}`);
Тогда вам вообще не понадобится moment.