Почему date.toLocalString() возвращает два разных формата?

Итак, я использую Date.toLocaleString(), чтобы получить время в определенном часовом поясе, но столкнулся с проблемой: он возвращает два разных формата даты на двух разных ОС.

let currentTimeInSGT = new Date().toLocaleString('SG', {
  timeZone: 'Asia/Singapore',
  hour12: false
})
console.info(currentTimeInSGT)

В окнах он возвращается

7/18/2019, 19:19:32

В убунту возвращается

18/07/2019, 19:19:32

оба они протестированы на хроме, а также значение между браузерами также различается, firefox и хром также дают разные форматы

Как я могу получить согласованный формат даты и времени?

является ли «sg» допустимой локалью? Если он недействителен, я думаю, что он использует настройки по умолчанию, отсюда и несоответствие

heunetik 18.07.2019 14:45

Предполагается, что «SG» означает Сингапур? SG — язык санго. Вместо этого вам нужен «язык-локаль», например. "en-sg".

JJJ 18.07.2019 14:46

@JJJ, но все же, почему я получаю разные результаты, когда использую в одном и том же браузере разные ОС, есть идеи,

Code Maniac 18.07.2019 18:38

Потому что вы не указали локаль, только язык.

JJJ 18.07.2019 18:43

@JJJ omg действительно глупая ошибка, спасибо, приятель, за твое время и помощь :)

Code Maniac 18.07.2019 18:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
706
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

localeString использует системные настройки, чтобы определить, в каком формате он должен быть возвращен, каждый метод, отмеченный локалью, будет показывать это поведение в Javascript.

Вы можете использовать toISOString для последовательного преобразования даты в строки.

Обновлено: не видел тег java script

Ответ принят как подходящий

Вместо того, чтобы использовать sg в качестве локали, вам, вероятно, следует использовать en-SG, как это, кажется, принятый шаблон.

Это дало одинаковые результаты во всех браузерах, которые я проверял. (Хром, Фаерфокс, Край)

let currentTimeInSGT = new Date().toLocaleString('en-SG', {
  timeZone: 'Asia/Singapore',
  hour12: false
})

console.info(currentTimeInSGT)

Спасибо за ответ :) Можете ли вы сказать мне ОС, на которой вы тестировали?

Code Maniac 18.07.2019 18:43

Windows 10 Корпоративная / версия 1903 / сборка ОС 18362.175

heunetik 19.07.2019 08:37

Другие вопросы по теме