2012-03-13 85 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数据类型相同的方式创建包装控制器。

相关问题