Salesforce Apex:验证格式和值的日期

Ric*_*d N 1 validation date salesforce apex-code

我需要验证用户通过visualforce页面输入的日期字段.我的代码期望的格式是"yyyy-MM-dd".

在顶点处理此问题的最佳方法是什么?在使用某些标准类之前,我在Java中做了类似的事情,例如在SimpleDateFormat之类的Apex中没有.

现在我可以使用正则表达式检查"格式"是否正确.但我还必须阻止用户输入符合格式的"9999-99-99".我希望Salesforce有一个很好的内置解决方案.

谢谢你,凯文

Joh*_*ago 5

您可以尝试我称之为控制欺骗.我基本上创建一个空的sObject,其日期字段类似于Task对象(或类似的轻量级).在屏幕上,我显示任务日期的输入,该日期将呈现本机日期字段.这样做可以让salesforce验证用户的日期输入,并且用户也可以获得漂亮的日历弹出窗口.

以下是控制器中的示例

public class MyController {
public Task DateInput {get;set;}

public MyController() {
    DateInput = new Task();
}

public void save() {
    Date dInputDate = DateInput.ActivityDate;

    //Format Date
    DateTime dtValue = DateTime.newInstance(dInputDate.year(), dInputDate.month(), dInputDate.day());
    string sFormattedDate = dtValue.format('yyyy-MM-dd');

}
}
Run Code Online (Sandbox Code Playgroud)

这是Page的样子

<apex:page controller="MyController">

<apex:form>
    <apex:pageBlock>
        <apex:pageBlockSection>
            <apex:pageBlockSectionItem>
                <apex:outputLabel for="inputDate" value="My Date"/>
                <apex:inputField value="{!DateInput.ActivityDate}" />
            </apex:pageBlockSectionItem>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:form>
</apex:page>
Run Code Online (Sandbox Code Playgroud)

您注意到我在save方法中执行的格式化.你不能在Date上使用格式,但你可以在DateTime上,所以我只是将Date转换为DateTime,然后使用format方法格式化我的日期.