Salesforce 我可以获取apex:outputText的区域设置格式吗?

Salesforce 我可以获取apex:outputText的区域设置格式吗?,salesforce,visualforce,Salesforce,Visualforce,我知道你可以这样设置日期格式: <apex:outputText value="{0,date,MM'/'dd'/'yyyy}"> <apex:param value="{!contact.Birthdate}" /> </apex:outputText> 但是,我的应用程序将分发到多个国家。在一些国家(如我国),日期格式为dd/MM/yyyy,但在其他国家(如美国),日期格式为MM/dd/yyyy 有什么方法可以告诉Visualforce使用

我知道你可以这样设置日期格式:

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

但是,我的应用程序将分发到多个国家。在一些国家(如我国),日期格式为
dd/MM/yyyy
,但在其他国家(如美国),日期格式为
MM/dd/yyyy


有什么方法可以告诉Visualforce使用区域设置的短日期格式吗?

假设您在value属性中指定日期类型的变量,它应该会自动为您处理区域设置。因此,您不需要显式格式化它。

基于Apex param的格式化基于Java的:


此问题的唯一有效解决方案最初发布在。我发布以下代码,以防链接突然消失:

您必须创建名为
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>
然后使用这样的组件:

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


它处理您输入的任何日期值,不一定是sObject字段。整个想法基于这样一个事实,
Date.format()
函数正在基于当前用户的语言环境创建字符串。您可以用同样的方法为DateTime和Decimal数据类型创建包装器控制器。

是,但默认格式(如果未指定)为“中”。我想在不丢失区域设置支持的情况下将其更改为简短。不幸的是,此解决方案不提供根据用户区域设置的日期格式。(更多信息请参见此处:)对不起,不是针对个人的,我只是不喜欢接受的答案包含不正确的答案。除此之外,我还因为投了反对票而输了1分。对我来说,最重要的不是分数,而是质量。另外,我已经发布了一个实际有效的答案,所以这在Salesforce中并非不可能做到。如果你也关心SO社区的质量,请向上投票。轻松伴侣,无需讽刺;-)
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()}"/>