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

时间:2012-08-06 19:46:04

标签: validation date salesforce apex-code

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

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

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

谢谢, 卡尔文

2 个答案:

答案 0 :(得分: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');

}
}

以下是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>

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

答案 1 :(得分:0)

伙计们我设法解决了我的问题,因为它有点独特。

因此,我使用正则表达式来验证输入日期的格式,以确保它采用yyyy-MM-dd格式。

我用Date.valueOf 这种内置方法总是采用yyyy-MM-dd形式的日期。如果它有一个像9999-99-99这样的错误值,它会抛出异常....我使用e.getMessage()向用户显示异常消息,以完成对日期字段的验证。