Я до сих пор смешиваю ответы и добавляю их, потому что мне пришлось прочитать все из них и некоторое время дополнительно исследовать, чтобы отобразить строку даты и времени из db в формате локального часового пояса пользователя.
Строка даты и времени поступает из базы данных Python / Django в формате: 2016-12-05T15: 12: 24.215Z
Надежное определение языка браузера в JavaScript, похоже, не работает во всех браузерах (см. JavaScript для определения предпочтения языка браузера ), поэтому я получаю язык браузера с сервера.
Python / Django: отправить язык браузера запроса в качестве параметра контекста:
language = request.META.get('HTTP_ACCEPT_LANGUAGE')
return render(request, 'cssexy/index.html', { "language": language })
HTML: напишите это в скрытом вводе:
<input type="hidden" id="browserlanguage" value={{ language }}/>
JavaScript: получить значение скрытого ввода, например en-GB, en-US; q = 0,8, en; q = 0,6 /, а затем взять первый язык в списке только с помощью замены и регулярного выражения
const browserlanguage = document.getElementById("browserlanguage").value;
var defaultlang = browserlanguage.replace(/(\w{2}\-\w{2}),.*/, "$1");
JavaScript: преобразовать в datetime и отформатировать его:
var options = { hour: "2-digit", minute: "2-digit" };
var dt = (new Date(str)).toLocaleDateString(defaultlang, options);
См .: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
Результат (язык браузера en-gb): 05.12.2016, 14: 58