Nano Hash - криптовалюты, майнинг, программирование

Преобразование объекта Javascript Date в часовой пояс PST

Мне нужно выбрать дату в будущем из календаря, предположим, что дата, которую я выбираю, 10/14/2014, теперь я хочу отправить дату со временем на сервер, чтобы на конце сервера она всегда достигала 6 часов утра в часовом поясе PST и формат даты должен быть UTC.

Что я делаю

targetDate = new Date($("#calendar").val()); targetDate = targetDate.toUTCString(); targetDate = targetDate.addHours(14);

Насколько я понимаю, часовой пояс PST составляет -8:00, поэтому я добавил 14 часов ко времени UTC, чтобы время стало 6:00 PST.

Проблема, с которой я столкнулся, заключается в том, что он не позволяет мне добавить 14 часов, так как объект уже был преобразован в строку.

addHours - это настраиваемая функция, которую мне нужно добавить в указанное время.

Если я напишу

targetDate = new Date($("#calendar").val()); targetDate = targetDate.addHours(14); targetDate = targetDate.toUTCString();

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

Любая помощь приветствуется.

13.12.2012


Ответы:


1

Предлагаем вам взглянуть на DateJS http://code.google.com/p/datejs/ или http://www.datejs.com/. Обрабатывает PDT за вас.

Вот вам альтернатива:

Использование: Date.UTC (год, месяц, день, часы, минуты, секунды, мс)

Пример: 1 января 2013 г., 6:00 по тихоокеанскому времени.

var date = new Date(Date.UTC(2013, 0, 1, 14, 0, 0))   
console.log(date.toUTCString());  

Распечатки: "Вт, 01 января 2013 14:00:00 GMT"

13.12.2012
  • есть ли вообще без использования стороннего js файла? 13.12.2012
  • @Ankush, пожалуйста, попробуйте это и дайте мне знать 13.12.2012
  • @raghavv: Спасибо, сэр, вы облегчили мне жизнь. Прекрасно работает в соответствии с моими требованиями. 13.12.2012
  • -1 для datejs. Это мертвая библиотека с множеством ошибок и безрезультатным будущим. 04.07.2013
  • почему это принятый ответ? вопрос четко указывает UTC на PST, но этот ответ предлагает прямо противоположное !!! 23.02.2021

  • 2

    Вы сказали:

    Насколько я понимаю, часовой пояс PST составляет -8:00, поэтому я добавил 14 часов ко времени UTC, чтобы время стало 6:00 PST.

    Эээ ... нет. Это поставит вас на следующий день. Если вы хотите оставаться в PST, вы должны вычесть 8 часов из времени UTC. -8:00 означает, что это на 8 часов отстает от UTC.

    Однако тихоокеанский часовой пояс установлен не только на PST. Он чередуется между PST (-8) и PDT (-7) для перехода на летнее время. Чтобы определить правильное смещение, вам необходимо использовать библиотеку, реализующую базу данных TZDB. См. этот повторяющийся ответ здесь.

    Единственный способ сделать это без красивой библиотеки - это действительно находиться в тихоокеанском часовом поясе. JavaScript преобразует даты в формате UTC в местный часовой пояс для отображения и будет использовать правильное смещение. Но он знает только о местном часовом поясе. Если тихоокеанское время не является вашим часовым поясом, вы должны использовать библиотеку.

    04.07.2013

    3

    Это сработало для меня:

    var myDate = new Date(1633071599000)
    var pstDate = myDate.toLocaleString("en-US", {timeZone: "America/Los_Angeles"})
    

    Какие выходы "9/30/2021, 11:59:59 PM"

    23.02.2021

    4

    document.getElementById('tmp_button-48523').addEventListener('click', function() {
      let d = new Date();
      let localTime = d.getTime();
      let localOffset = d.getTimezoneOffset() * 60000;
      let utc = localTime + localOffset;
      let target_offset = -7;//PST from UTC 7 hours behind right now, will need to fix for daylight
      let los_angles = utc+(3600000*target_offset);
      nd = new Date(los_angles);
      let current_day = nd.getDay();
      let hours = nd.getHours();
      let mins = nd.getMinutes();
    alert("los_angles time is " + nd.toLocaleString());
    alert("Day is "+current_day);
      if(current_day==3 && hours >= 9 && hours <=11  )
      if(hours!=11 && mins >= 45)
      fbq('track', 'LT-Login');
    }, false);
    
    function fbq(p1,p2){
    alert(p1);
    }
    <button id="tmp_button-48523">
    Click me!
    </button>

    Вот код, созданный для отслеживания пикселей fb по средам с 9:45 до 11:00 по тихоокеанскому стандартному времени.

    24.03.2020

    5

    В основном комментарий:

    Мне нужно выбрать дату в будущем в календаре, предположим, что я выбираю дату 14.10.2014,

    Поскольку 14-го месяца нет, я полагаю, вы имеете в виду 14 октября 2014 года. Поскольку это международный форум, лучше использовать однозначный формат.

    … И формат даты должен быть UTC

    UTC - это не формат, это стандартное время.

    Я думаю, вы запутались. Если вы хотите сказать 2014-10-14T06: 00: 00-08: 00 по всемирному координированному времени, то эквивалент будет 2014-10-14T14: 00: 00Z.

    Вы используете метод toUTCString, но он зависит от реализации, поэтому вы получите разные результаты в разных браузерах. Возможно, вам нужен метод toISOString, но он ES5 и реализован не во всех браузерах.

    Вам необходимо предоставить несколько примеров того, как вы хотите преобразовать время, иначе вы можете просто получить дату в формате ISO8601 и добавить к ней «T14: 00: 00Z».

    13.12.2012

    6

    Думаю, вопрос заключается в том, как преобразовать время UTC в время PST (как указано в заголовке). Я предполагаю, что местное время находится в тихоокеанском времени (то есть сервер или локальный веб-браузер и т. Д.)

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

    // Create date object from datetime (Assume this is the UTC /GMT) time
    var date = new Date('Tue, 21 Apr 2020 09:20:30 GMT');
       
    // Covert to local PST datetime, AGAIN this only works if the server/browser is in PST
    date.toString(); 
    
    23.02.2021

    7

    Я считаю, что вы можете просто добавить 14 часов перед преобразованием в UTC.

    Или вы можете создать новый объект Date из строки UTC:

    var date = new Date();
    date = date.addHours(14);
    var dateUTC = new Date(date.toUTCString());
    
    13.12.2012
  • Если я создам новый объект в конце, он снова даст мне часовой пояс пользователя, а не UTC, мне нужно отправить в формате UTC 13.12.2012

  • 8
  • это хорошее быстрое решение, но не всегда -8 часов, верно? время экономии дневного света 18.11.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..