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()}"/>