1

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

在顶点处理这个问题的最佳方法是什么。在使用 Apex 中不可用的某些标准类(例如 SimpleDateFormat)之前,我在 Java 中做过类似的事情。

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

谢谢,卡尔文

4

2 回答 2

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');

}
}

这是页面的样子

<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 方法来格式化我的日期。

于 2012-08-07T02:16:47.893 回答
0

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

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

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

于 2012-08-08T15:57:58.610 回答