Symfony 3 Получите часовой пояс от пользователей, не спрашивая их в форме

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

$builder->add('timezone', ChoiceType::class, array(
                'choices' => $choices
            ));

но я хотел бы изменить и принять эту информацию напрямую, не спрашивая пользователя в форме.

Для меня это важно, потому что у меня будет много пользователей, которые точно не знают свой часовой пояс и выберут плохой.

Фактически, я объявил, кто является магазином с датой в часовом поясе GMT, но я хотел бы отображать их в часовом поясе от кого-то кто зарегистрирован или нет на моем веб-сайте.

Для отображения у меня есть две функции:

{{ clanwar.rendezvous|localizeddate('full', 'short') }}
{{ clanwar.rendezvous|date("d F Y, G:i e P", user.timezone)}}

Первый дает дату с часовым поясом по умолчанию и берет часовой пояс с сервера. (я могу изменить это вручную) Второй должен иметь часовой пояс от зарегистрированного пользователя.

Таким образом, оба варианта нельзя использовать для того, что я хочу делать.

Думаю, мне нужно использовать функцию Javascript. Я хотел бы сохранить часовой пояс пользователя в моем сеансе и рассчитал всю дату с этой информацией. Но я не нашел хорошей функции, которая могла бы просто найти этот элемент.

Вы знаете что-нибудь, кто может мне помочь? Спасибо

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
343
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
{{ clanwar.rendezvous|date("d F Y, G:i e P", user.timezone)}}

Таким образом, вам явно нужно будет сохранить часовой пояс в объекте User или что-то в этом роде. Но это подвержено изменениям, поскольку пользователь может путешествовать / перемещаться, он может быть не столь дисциплинирован, когда дело доходит до смены часового пояса каждый раз.

Я бы посоветовал отображать дату в формате ISO в формате UTC, например, в элементе <div> со специальным классом:

<div class = "user_timezone_container">{{ clanwar.rendezvous|localizeddate('full', 'short') }}</div>

А затем сделайте небольшой скрипт JS:

$('.user_timezone_container').each(function(){
    var m = moment($(this).text()); //example: "2018-04-03T09:30:26Z"

    $(this).text(m.local().format('YYYY-MM-DD HH:mm:ss'));
})

Я взял приведенный выше пример из вопроса SO Момент Js UTC по местному времени

Понятно, что ни jQuery, ни MomentJS не нужны, но я использовал их здесь для удобства ...

Спасибо за вашу помощь

Jean-Baptiste Mace 04.04.2018 12:08

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