Преобразовать часовой пояс сервера по умолчанию во время локального пользователя с помощью moment?

#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.