Я ищу функцию javascript для преобразования даты и времени UTC в формат даты и времени проходящего часового пояса. Я должен передать часовой пояс в соответствии с местоположением пользователя. Мне не разрешено использовать какую-либо библиотеку дат.

Моя строка даты и времени в формате UTC: "2016-04-10 09:00:00.0"

Прохождение часового пояса: EST

Ожидаемый результат1: "April 10,2016"

Ожидаемый результат 2: 04 AM EST

Не могли бы вы дать некоторое представление о функции Js, чтобы выполнить мое требование?

P.S: Я не могу использовать сторонние библиотеки дат для этой работы.

2
user5970552 4 Мар 2016 в 00:37
1
Вы должны показать, что вы пробовали, это не бесплатная услуга кодирования. Если это домашнее задание или задание, скажите об этом. Ваша строка не соответствует ни одному стандарту, вам нужно проанализировать ее вручную (2 строки кода). Чтобы приспособиться к определенному часовому поясу, просто необходимо изменить время на соответствующую величину. Здесь есть много вопросов и ответов о том, как это сделать. Найдите, попробуйте что-нибудь, опубликуйте еще раз, если это не сработает.
 – 
RobG
4 Мар 2016 в 02:51

2 ответа

Вы можете создать функцию, как показано ниже, для преобразования времени UTC в заданное смещение часового пояса:

//function to calculate local time
function calcTime(datestring, city, offset) {

  d = new Date(datestring);

  utc = d.getTime() + (d.getTimezoneOffset() * 60000);

  nd = new Date(utc + (3600000 * offset));

  var options = {}
    // an application may want to use UTC and make that visible
  options.timeZone = 'America/' + city;
  options.timeZoneName = 'short';

  return nd.toLocaleString('en', options)


}


document.write('Local time on server: 2016-04-10T09:00:00' + '<br>')
document.write('Local time in EST/EDT:' + calcTime('2016-04-10T09:00:00', 'New_York', '-5.0'));

Если вам нужно поддерживать только разные часовые пояса в США, вы можете создать таблицу поиска, соответствующую смещению часового пояса для правильного города.

Eastern ........... America/New_York
Central ........... America/Chicago
Mountain .......... America/Denver
Mountain no DST ... America/Phoenix
Pacific ........... America/Los_Angeles
Alaska ............ America/Anchorage
Hawaii ............ America/Adak
Hawaii no DST ..... Pacific/Honolulu

Как видите, логика быстро усложняется, поэтому по возможности лучше использовать внешние библиотеки.

0
Alex 4 Мар 2016 в 23:23
Я получаю в ответ неверную дату
 – 
user5970552
4 Мар 2016 в 01:04
Я исправил для IE, кажется, Chrome более снисходителен к формату даты
 – 
Alex
4 Мар 2016 в 01:12
Есть ли способ динамически заполнять строку часового пояса как EST, когда вы передаете смещение как -5?
 – 
user5970552
4 Мар 2016 в 01:46
LIke 4.00 AM EST на выходе
 – 
user5970552
4 Мар 2016 в 01:47
Я изменил функцию, чтобы она принимала город (например, Нью-Йорк). Это позволит вам распечатать часовой пояс.
 – 
Alex
4 Мар 2016 в 02:24

Я использую этот тайм-менеджмент, попробуйте, может быть, вы ищете это

Moment.js

0
Pedro Miguel Pimienta Morales 4 Мар 2016 в 00:54
Это не ответ, это должен быть комментарий. OP также заявил, что библиотеку использовать нельзя.
 – 
RobG
4 Мар 2016 в 02:48
Хорошо, извините, ребята, я думаю другое
 – 
Pedro Miguel Pimienta Morales
5 Мар 2016 в 03:20