Проблема часовых поясов при создании даты

Поддержка
  • Задача: создать дату с указанием времени - 11 часов утра.
    Поскольку в летнее и зимнее время UTC может отличаться, при создании даты указываю TimeZone "0"

    a8cd32e3-5c77-40b8-bab8-7bdca4e267a7-image.png

    Тем не менее, в списке переменных время выводится в формате UTC+3, которое добавило 3 часа к указанным мною.

    c74a202a-6e1c-456c-956e-ab6ceff20c07-image.png

    Т.е. в таком случае получается ошибка в дате даже не на 3 часа, а на целых 6 часов.
    По крайней мере, на сайте, с которым я работаю, 14:00 в часовом поясе "+3" = 17:00.

    Отсюда вопрос: а как создать дату так, чтобы указанное мной время было уже с учетом поправки на 3 часа вперед? То есть, как имея в числовой переменной значение "11" я могу получить в дате летом "8:00 UTC+3", а зимой "9:00 UTC+2"?
    Просто статично отнимать -3 часа - это не вариант, потому что зимой отнимать нужно не 3, а 2 часа. То есть, нужно как-то определять текущий UTC.
    Получать TimeZone кубиком из даты тоже не вариант, потому что в этом случае кубик получает значение TimeZone "0" (как я и указывал при создании даты).

    Вопрос:
    как мне сравнить между собой 11 часов в BAS: 0ecdcafb-e41d-4b59-8231-95701896cee7-image.png
    и 11 часов на сайте: aae1a2d0-b0ce-435a-b4ee-84adeaa52ff3-image.png
    если сам BAS из строки на сайте сформировал вот такую дату: 78a59b68-b398-42d7-bf17-d65a72113cb5-image.png

    Возможно я где-то что-то путаю, или банально туплю?.. Любезно прошу вправить мне мозги)))

  • @gurkin4 Спасибо. Однако, насколько я понял, там речь идет о получении текущей даты ПК, а мне нужно создавать конкретные даты.
    К сожалению, я пока не знаю как отредактировать данный код под себя. Мне еще только предстоит этому научиться.
    Возможно, существует какой-то более простой и наглядный способ сделать это посредством кубиков БАС?

  • @Mimino Вам нужно исходить от локального времени или от таймзоны отпечатка?
    От локального

    [[UNIXMS]] = Date.now();
    

    Для отпечатка

    [[SSS]] = new Date()
    [[ZZZ]] = ([[SSS]].getTime() + [[SSS]].getTimezoneOffset()*60*1000);
    

    А уж перевести UNIX в дату и обратно не составит труда.

  • @gurkin4 есть сайт:
    https://data.goaloo2.com/1x2/Companyhistory.aspx?id=1047&matchdate=2022-01-01
    На нем список футбольных матчей с указанием времени матча, которое я беру из атрибута "data-t" ячейки с датой.
    Мне нужно спарсить только те матчи, которые начались не ранее времени, указанного пользователем (например - 11:00).

  • @Mimino Ну включите логику и подумайте.
    Проще перевести в UNIX дату начала матча и если это число больше указанного пользователем (переведённого в UNIX), то это подходит.

  • @gurkin4 блин... читаю, перечитываю снова, но все-равно не понимаю.
    Чем скрипт по вашей ссылке выгодно отличается от двух кубиков БАС: b23a5915-1072-4667-b44e-5d9ad4334193-image.png
    И даже если я переведу дату начала матча в милисекунды, то какой смысл сравнивать количество милисекунд с тем, которое я получу из даты введенной пользователем, ведь оно изначально не совпадает по причине тех самых часовых зон? Или я чего-то не понимаю?

    Чувствую себя старой бабушкой, которой обьясняют как включать компьютер...

  • @Mimino Локальное время пользователя совпадёт с его тайм зоной, а вот какое время указано на сайте, это другой вопрос.

  • This post is deleted!

  • 0 Votes
    3 Posts
    493 Views
  • 0 Votes
    3 Posts
    521 Views
  • 0 Votes
    5 Posts
    768 Views
  • 0 Votes
    7 Posts
    806 Views
  • 0 Votes
    3 Posts
    1302 Views