Как получить часы и минуты из строки UTC? - PullRequest
1 голос
/ 26 сентября 2019

Я хочу преобразовать время из местного времени в UTC, а затем декодировать это время UTC обратно в мое исходное местное время.

Чтобы преобразовать местное время в UTC, я использовал приведенный ниже код, который работает нормально.

const now = new Date();    
let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);
console.log(new Date(d).getHours(), new Date(d).getMinutes());

Приведенный выше код обеспечивает время UTC, которое составляет +5: 30, а выходное значение равно 18,35 (18:35:00)

Здесь, чтобы преобразовать обратно 18,35 (18:35:00) до 13:05:00 Я использовал приведенный ниже код

const now = new Date();
let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);
console.log(d.toUTCString());

Приведенный выше код предоставляет мне строковый формат даты с временем 13:05:00, которое является правильным.

Теперь я хочу получить часы и минуты из этой строки даты.

Я попытался добавить:

new Date(d.UTCString()) 

Но он дает мне 18 часов и 35 какминут, где я хочу 13 часов и 05 минут.Пожалуйста, помогите мне с этим.Спасибо.

Ответы [ 5 ]

5 голосов
/ 26 сентября 2019

const now = new Date();
let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);
console.log(d.getUTCHours(), d.getUTCMinutes());
1 голос
/ 26 сентября 2019

Вот toLocaleTimeString метод

const now = new Date();    
let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);

console.log('locale', new Date(d).toLocaleTimeString('ru-kz', { timeStyle: 'short' }))
console.log('utc', new Date(d).getUTCHours() + ':' + new Date(d).getUTCMinutes())
1 голос
/ 26 сентября 2019

Решение:

  1. Установите часы и минуты, используя функции даты setHours() и setMinutes() JS
  2. Получите часы и минуты, используя getHours() и getMintues() Функции даты JS

Примечание: текущая дата основана на текущем времени пользователя.

const now = new Date();
now.setHours(15);
now.setMinutes(30);

console.log(now.toString());
console.log(now.getMinutes());
console.log(now.getMinutes());

Ресурс для понимания времени немного больше: digtialocean.com

0 голосов
/ 26 сентября 2019

Ты, кажется, слишком усложняешь вещи.Чтобы получить время UTC, просто используйте методы getUTC , чтобы получить значения часов и минут.

Чтобы получить эквивалентное местное время для времени UTC, используйте setUTC методы установки значений часов и минут, например

// Helper to pad single digits
function z(n) {
  return ('0' + n).slice(-2);
}

let d = new Date();
let localTime = z(d.getHours()) + ':' + z(d.getMinutes());
let utcTime = z(d.getUTCHours()) + ':' + z(d.getUTCMinutes());

// Print local time for d
console.log('Local time: ' + localTime);

// Print UTC time for d
console.log('UTC time: ' + utcTime);

// Set the time using UTC time in HH:mm format
utcTime = "13:05";
let [utcH, utcM] = utcTime.split(':');
d.setUTCHours(utcH, utcM);

console.log('At UTC ' + utcTime + ' the local time is ' + z(d.getHours()) + ':' + z(d.getMinutes()));
0 голосов
/ 26 сентября 2019

Вы можете использовать getTimezoneOffset .Вот пример получения текущего UTC часа и минуты

var curLocalDate = new Date();
var curlLocalMiliSec = curLocalDate.getTime();
var utcOffsetInMin   = curLocalDate.getTimezoneOffset();
var utcOffsetInMiliSec = utcOffsetInMin * 60 * 1000;

var utcTime = new Date(curlLocalMiliSec + utcOffsetInMiliSec);

var utcHour = utcTime.getHours();
var utcMinutes = utcTime.getMinutes();

console.log("Local time:" + curLocalDate.getHours() + ":" + curLocalDate.getMinutes());

console.log("UTC time:" + utcHour + ":" + utcMinutes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...