Регистрация  |  Вход

Переформатирование даты в VF разметке

И вот новые мелочи жизни:

вывожу на VF странице поле записи Типа ВремяДата через apex:outputText.

и вроде все как обычно.

Но нет, не расслабляться: время вывелось в GMT, хотя тоже поле в станд дитейл пейдж выводится в час поясе юзера (то есть правильно).

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

Это можно как-то решить в VF?

И вот новые мелочи жизни:

вывожу на VF странице поле записи Типа ВремяДата через apex:outputText. 

и вроде все как обычно. 

Но нет, не расслабляться: время вывелось в GMT, хотя тоже поле в станд дитейл пейдж выводится в час поясе юзера (то есть правильно).

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

Это можно как-то решить в VF?

Видимо никак, в standard details page используется <apex:outputField> который всё сам делает. Как вариант решения - в контроллере создать какой нибудь стандартный объект (Event, Opportunity или др, главное чтобы был филд типа DateTime) и выводить его на VF через <apex:outputField>. Или создать компонент который будет инкапсулировать эту логику, а параметром ему передавать свой DateTime property.

Видимо никак, в standard details page используется <apex:outputField> который всё сам делает. Как вариант решения - в контроллере создать какой нибудь стандартный объект (Event, Opportunity или др, главное чтобы был филд типа DateTime) и выводить его на VF через <apex:outputField>. Или создать компонент который будет инкапсулировать эту логику, а параметром ему передавать свой DateTime property.

dlisovsky
Видимо никак, в standard details page используется <apex:outputField> который всё сам делает. Как вариант решения - в контроллере создать какой нибудь стандартный объект (Event, Opportunity или др, главное чтобы был филд типа DateTime) и выводить его на VF через <apex:outputField>. Или создать компонент который будет инкапсулировать эту логику, а параметром ему передавать свой DateTime field.

А действительно, чего это я туплю?! Поставил <apex:outputField> - и порядок.
Спасибо

[quote="dlisovsky"]Видимо никак, в standard details page используется <apex:outputField> который всё сам делает. Как вариант решения - в контроллере создать какой нибудь стандартный объект (Event, Opportunity или др, главное чтобы был филд типа DateTime) и выводить его на VF через <apex:outputField>. Или создать компонент который будет инкапсулировать эту логику, а параметром ему передавать свой DateTime field.[/quote]

А действительно, чего это я туплю?! Поставил <apex:outputField> - и порядок.
Спасибо

А можно вот так:

<apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
<apex:param value="{!u.ActivityDate}" />
</apex:outputText>

А можно вот так:
[code]
                <apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
                    <apex:param value="{!u.ActivityDate}" /> 
                </apex:outputText>   
[/code]

AkiraDio, хороший пример.

Хочу только отметить разницу между apex:outputField и outputText с форматированием:
- в случае apex:outputField дата выводится в часовом поясе пользователя, который указан в настройках профиля.
- в случае outputText дата выводится в GMT+0.

Пока склоняемся к тому чтобы уговорить заказчика использовать стандартный функционал SF и выводить дату так с помощью apex:outputField так, как пользователь указывает у себя в настройках. Это правильный подход. Но встречаются и такие заказчики, которые хотят "чтобы было так как на макете!" :)

AkiraDio, хороший пример.

Хочу только отметить разницу между apex:outputField и outputText с форматированием:
- в случае apex:outputField дата выводится в часовом поясе пользователя, который указан в настройках профиля.
- в случае outputText дата выводится в GMT+0.

Пока склоняемся к тому чтобы уговорить заказчика использовать стандартный функционал SF и выводить дату так с помощью apex:outputField так, как пользователь указывает у себя в настройках. Это правильный подход. Но встречаются и такие заказчики, которые хотят "чтобы было так как на макете!" :)

AkiraDio
А можно вот так:
<apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
<apex:param value="{!u.ActivityDate}" />
</apex:outputText>

Моя удивляться!
Даже при использовании apex:outputText естькакие-то варианты (хоть проблему с приведением даты к часовому поясу, как видно из сообщения Дмитрия, и не решают). Собственно если эта схема apex:outputText--apex:param работат, для нее вероятно есть еще и другие ситуации, когда она может здорово пригодится.

[quote="AkiraDio"]А можно вот так:
[code]
                <apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
                    <apex:param value="{!u.ActivityDate}" /> 
                </apex:outputText>   
[/code][/quote]

Моя удивляться!
Даже при использовании apex:outputText естькакие-то варианты (хоть проблему с приведением даты к часовому поясу, как видно из сообщения Дмитрия, и не решают). Собственно если эта схема [i]apex:outputText--apex:param[/i] работат, для нее вероятно есть еще и другие ситуации, когда она может здорово пригодится.

Есть ещё такой вариант http://www.interactiveties.com/b_locale_datetime.php.
Мап форматов + outputText

Есть ещё такой вариант [url]http://www.interactiveties.com/b_locale_datetime.php[/url]. 
Мап форматов + outputText