Momentjs: как преобразовать дату/время одного часового пояса в дату/время UTC

У меня есть дата/время с часовым поясом, и я хочу преобразовать его в UTC.

const date = '2019-04-10T20:30:00Z';
const zone = 'Asia/Kuala_Lumpur';
const utcDate = moment(date).tz(zone).utc().format();
console.info('UTC Date : ', utcDate);

моя переменная даты находится в стандартном формате для UTC? Как перевести этот часовой пояс в другой часовой пояс?

в чем собственно вопрос??

naib khan 10.04.2019 14:03

Проблема в том, что '2019-04-10T20:30:00Z' уже является стандартным форматом для этой даты и времени в UTC? И что, когда вы переводите его на азиатское время, это неправильно, потому что вы предполагаете, что «2019-04-10T20:30:00Z» — это местное время?

Shilly 10.04.2019 14:07

@naibkhan У меня есть дата/время с timzone (это случайное или динамическое) и я хочу преобразовать его в UTC

Shivprsad Sammbhare 10.04.2019 14:08

Строки даты и времени, содержащие T между датой и временем и оканчивающиеся на Z, являются международным стандартом для времени UTC. ИСО 8601. Поэтому, если предполагается, что это местное время, попробуйте исправить все, что генерирует эти случайные/динамические строки даты и времени. Вы можете удалить «Z» в конце, чтобы убедиться, что строка сначала анализируется как местное время.

Shilly 10.04.2019 14:09
Поведение ключевого слова "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) для оценки ваших знаний,...
6
4
13 134
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы можете сделать это, как код ниже:

  // your inputs
    var date  = '2019-04-10T20:30:00Z';
    var desiredFormate   = "MM/DD/YYYY h:mm:ss A";  // must match the input
    var zone  = 'Asia/Kuala_Lumpur';

    // construct a moment object
    var m = moment.tz(date , desiredFormate, zone);
    // convert it to utc
    m.utc();

    // format it for output
    var s = m.format(fmt)  // result: 2017-08-31T08:45:00+06:00
Ответ принят как подходящий

Часовой пояс UTC обозначается суффиксом «Z», поэтому вам нужно удалить "Z" и использовать moment.tz(..., String) вместо moment().tz(String), потому что первый создает момент с часовым поясом, а второй используется для изменения часового пояса в существующий момент:

const date = '2019-04-10T20:30:00';
const zone = 'Asia/Kuala_Lumpur';
const utcDate = moment.tz(date, zone).utc().format();
console.info('UTC Date : ', utcDate);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>

Вы можете использовать документацию момент.js:

moment().format('MMMM Do YYYY, h:mm:ss a'); // April 10th 2019, 3:29:36 pm
moment().format('dddd'); // Wednesday
moment().format("MMM Do YY"); // Apr 10th 19
moment().format('YYYY [escaped] YYYY'); // 2019 escaped 2019
moment().format();
function calcTime(city, offset) {

     // create Date object for current location
     var d = new Date();

     // convert to msec
     // add local time zone offset
     // get UTC time in msec
     var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

     // create new Date object for different city
     // using supplied offset
     var nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time in " + city + " is " + nd.toLocaleString();
}

При ответе на старый вопрос ваш ответ был бы гораздо полезнее для других пользователей StackOverflow, если бы вы включили некоторый контекст, чтобы объяснить, как ваш ответ помогает, особенно для вопроса, на который уже есть принятый ответ. См.: Как написать хороший ответ.

David Buck 15.01.2020 11:36

const date = new Date();
console.info(date);
const zone = 'Asia/Karachi';
const utcDate = moment.tz(date, zone).utc().format();
console.info('UTC Date : ', utcDate);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>

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

Похожие вопросы

Обнаружение ошибки core.js: 15723 ERROR TypeError: невозможно прочитать свойство toLowerCase неопределенного значения в Angular 7
Как получить работающий таймер обратного отсчета с кнопкой, добавляющей +1 к счетчику после каждого нажатия
Функция vb.net JS, определенная в голове, не определена в onLoad
С# строка datetime utc и z при использовании в javascript
UnhandledPromiseRejectionWarning: отклонение необработанного обещания (идентификатор отклонения: 1): ReferenceError: RegistrationTokens не определен
Деструктуризация API https://randomuser.me/api/ для захвата заголовка, фамилии и имени, а также большой фотографии профиля пользователя, возвращаемого API
Как предотвратить исчезновение модального окна при блокировке экрана на Android?
Как вызвать событие onCheck для дочерних узлов в Kendo TreeView, когда родитель проверен
Вернуть код местной валюты в соответствии с часовым поясом пользователя
Защищенный маршрут ReactJS с вызовом API