Ad Widget

Collapse

javascript Date.parse возвращает "странное" значение

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sitnikov
    Junior Member
    • Jan 2010
    • 15

    #1

    javascript Date.parse возвращает "странное" значение

    в preprocessing

    Click image for larger version

Name:	image.png
Views:	125
Size:	17.6 KB
ID:	462585


    Click image for larger version

Name:	image.png
Views:	142
Size:	21.7 KB
ID:	462584


    1679703119 = Saturday, March 25, 2023 2:11:59 AM GMT+02:00


    если сделать в консоли броусера

    Date.parse('2023-04-06T12:11:59+0300')/1000

    результат 1680772319​

    zabbix server 6.4.1
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Забавно. В v6.0.14 результат аналогичный. Однако, проблема тут не в Zabbix-е, а в формате исходной строки.
    Date.parse() корректно разбирает аргумент, содержащий таймстэмп в формате ISO 8601; однако этот стандарт требует, чтобы часовой пояс задавался через разделитель - двоеточие:
    TZD = time zone designator (Z or +hh:mm or -hh:mm)
    И если двоеточие туда таки добавить ('2023-04-06T12:11:59+0300' -> '2023-04-06T12:11:59+03:00'), то распарсивает корректно.
    Любопытно, что более-менее корректно парсит без часового пояса, либо если он задан одними нулями (считает за UTC), а вот если задать как у вас - то лажает. Похоже, воспринимает его как "+300 часов" (как раз 12 с половиной суток).

    Comment

    • sitnikov
      Junior Member
      • Jan 2010
      • 15

      #3
      похоже на bug

      https://en.wikipedia.org/wiki/ISO_8601


      Time offsets from UTC[edit]

      The UTC offset is appended to the time in the same way that 'Z' was above, in the form ±[hh]:[mm], ±[hh][mm], or ±[hh].

      Negative UTC offsets describe a time zone west of UTC±00:00, where the civil time is behind (or earlier) than UTC so the zone designator will look like "−03:00","−0300", or "−03"

      Positive UTC offsets describe a time zone at or east of UTC±00:00, where the civil time is the same as or ahead (or later) than UTC so the zone designator will look like "+02:00","+0200", or "+02".​

      Comment

      Working...