Отображение даты и времени в соответствии с часовым поясом пользователя в Coldfusion - PullRequest
4 голосов
/ 24 ноября 2010

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

Как ты это делаешь в Coldfusion?

Я ищу решение, которое НЕ побуждает пользователя выбирать часовой пояс в любой точке, например Facebook.

Спасибо

Ответы [ 4 ]

10 голосов
/ 24 ноября 2010

Вместо того, чтобы форматировать выполнял CF, я бы выдвинул стандартизированное представление даты (например, UTF) и отформатировал дату в JavaScript. Таким образом, дата форматируется в соответствии с любым часовым поясом, установленным на компьютере.

Это позволяет избежать неправильных поисков вблизи зон изменения зон, имея дело с переходом на летнее время по сравнению с зонами, где это не наблюдается, и с людьми, путешествующими (форматирование с «домашним временем» или «местным временем»).

Добавлено:

Это выводит текущее время в длинном формате. Это полу-манжета, так что вы захотите взглянуть на JavaScript Date Object 's методы для дополнительных параметров форматирования.

<cfset n = dateconvert("local2utc",now())>
<script>
 d = new Date();
 d.setUTCFullYear(#dateformat(n, "yyyy")#);
 d.setUTCMonth(#dateformat(n, "m")#);
 d.setUTCDate(#dateformat(n, "d")#);
 d.setUTCHours(#timeformat(n, "H")#);
 d.setUTCMinutes(#timeformat(n, "m")#);
 document.write(d.toLocaleString());
</script>
6 голосов
/ 24 ноября 2010

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

Вы можете использовать JavaSript на стороне клиента, узнать смещение часового пояса и отправить его через Ajax-запрос в ColdFusion.

JavaScript:

var clienttime = new Date();
var time = clienttime.getTimezoneOffset()/60;

Затем на стороне сервера вы можете использовать смещение, чтобы вычислить дату, которую вы хотите показать пользователю.

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

1 голос
/ 24 ноября 2010

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

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

0 голосов
/ 07 августа 2016

если вы используете cfwheels.org и ваши пользователи не против увидеть «вчера» или «10 минут назад» ... тогда TimeAgoInWords () - это то, что вам нужно.

...