И вот новые мелочи жизни:
вывожу на VF странице поле записи Типа ВремяДата через apex:outputText.
и вроде все как обычно.
Но нет, не расслабляться: время вывелось в GMT, хотя тоже поле в станд дитейл пейдж выводится в час поясе юзера (то есть правильно).
ну как не хочется создавать создавать объект-обертку в контроллере для этой записи, где и переформатировать это поле.
Это можно как-то решить в VF?
Видимо никак, в standard details page используется <apex:outputField> который всё сам делает. Как вариант решения - в контроллере создать какой нибудь стандартный объект (Event, Opportunity или др, главное чтобы был филд типа DateTime) и выводить его на VF через <apex:outputField>. Или создать компонент который будет инкапсулировать эту логику, а параметром ему передавать свой DateTime property.
А действительно, чего это я туплю?! Поставил <apex:outputField> - и порядок.
Спасибо
А можно вот так:
<apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
<apex:param value="{!u.ActivityDate}" />
</apex:outputText>AkiraDio, хороший пример.
Хочу только отметить разницу между apex:outputField и outputText с форматированием:
- в случае apex:outputField дата выводится в часовом поясе пользователя, который указан в настройках профиля.
- в случае outputText дата выводится в GMT+0.
Пока склоняемся к тому чтобы уговорить заказчика использовать стандартный функционал SF и выводить дату так с помощью apex:outputField так, как пользователь указывает у себя в настройках. Это правильный подход. Но встречаются и такие заказчики, которые хотят "чтобы было так как на макете!" :)
Моя удивляться!
Даже при использовании apex:outputText естькакие-то варианты (хоть проблему с приведением даты к часовому поясу, как видно из сообщения Дмитрия, и не решают). Собственно если эта схема apex:outputText--apex:param работат, для нее вероятно есть еще и другие ситуации, когда она может здорово пригодится.
Есть ещё такой вариант http://www.interactiveties.com/b_locale_datetime.php.
Мап форматов + outputText