2012-03-13 59 views
2

我知道,你可以格式化日期如下:我可以獲取apex的語言環境格式:outputText嗎?

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

然而,我的申請將被分發到多個國家。在某些(如我的)上,日期格式爲dd/MM/yyyy,但在其他(如美國)格式爲MM/dd/yyyy

有沒有一種方法可以告訴Visualforce使用語言環境的短日期格式?

回答

1

頂點PARAM格式化是基於Java的MessageFormat

<apex:outputText value="{0, date, short}"> 
    <apex:param value="{!contact.Birthdate}" /> 
</apex:outputText> 
+0

不幸的是,這個解決方案沒有根據用戶的語言環境提供日期格式。 (請參閱此處瞭解更多信息:http://salesforce.stackexchange.com/questions/476/visualforce-locale-specific-date-format) – Wookie88 2014-08-07 11:57:08

+0

感謝您的支持,並從我身上拿走了2分,這顯然是Salesforce的一個bug他們厭惡地拒絕糾正。我想即使我停止使用他們的系統,我也會永遠被他們的無能所困擾。 – mmix 2014-08-13 15:33:09

+0

對不起,沒有任何個人信息,我只是不喜歡當接受的答案包含不正確的答案。除此之外,我還下降了1分。對我而言,這些要點不是最重要的,而是SO的質量:-)。另外,我發佈了一個實際可行的答案,因此在Salesforce中這不是不可能的。如果您還關心SO社區的質量,請注意它。 – Wookie88 2014-08-14 08:04:54

0

假設您在屬性中分配類型date的變量,它應該自動爲您處理語言環境。所以你不需要明確地格式化它。基於

+0

是的,但默認格式,如果您沒有指定,是* medium *。我想在不丟失語言環境支持的情況下將其更改爲* short *。 – 2012-03-15 13:18:44

2

唯一的解決這個問題,實際上是正常工作最初發佈於http://mindfiresfdcprofessionals.wordpress.com/2013/10/25/how-to-dispaly-locale-formatted-datetime-in-visual-force/。我張貼下面的代碼,以防萬一鏈接會突然消失:

你必須創建一個名爲LocaleDate新的VF成分:

<apex:component access="global" controller="LocaleDateController"> 
<apex:attribute assignTo="{!dateValue}" description="The Date value to be rendered based upon the user's 
       locale" name="date_Value" type="Date"></apex:attribute> 
     {!TimeZoneValue} 
</apex:component> 

其操控:

public with sharing class LocaleDateController { 

    public Date dateValue{get;set;} 

    public String getTimeZoneValue() { 
     if(dateValue != null) { 
      String localeFormatT = dateValue.format(); 
      return localeFormatT; 
     } 
     return null; 
    } 
} 

然後用這樣的這樣的組件:

<c:LocaleDate date_Value="{!TODAY()}"/> 

它正在處理您的任何日期值呃,不一定是sObject領域。整個想法基於事實,即Date.format()函數正在基於當前用戶的區域設置創建字符串。您可以使用與DateTime和Decimal數據類型相同的方式創建包裝控制器。