为什么我的J2ME DateField没有显示正确的日期?

时间:2009-04-06 15:34:23

标签: java java-me midp lcdui

我将值和日期值存储在记录存储中。我的日期字段设置如下:

StartDate = new DateField("Start Date ", DateField.DATE);
                cal1 = Calendar.getInstance();
                cal1.set(Calendar.YEAR, 2009);
                cal1.set(Calendar.MONTH, 0);
                cal1.set(Calendar.DAY_OF_MONTH, 1);
                StartDate.setDate(cal1.getTime());

我将日期保存为字符串,如下所示:

 strStartDate = cal1.get(cal1.DAY_OF_MONTH) + "/" +
                (cal1.get(cal1.MONTH) + 1) + "/" +
                cal1.get(cal1.YEAR);
 String detailsToAdd = strStartDate

(我缩短了代码。)现在,我希望能够在未来阶段编辑日期。但是,我需要代码才能执行此操作。到目前为止,我有:

EStartDate = new DateField("Start Date ", DateField.DATE);

我必须更改DateField框的名称,因为这与其他内容相冲突。

我基本上需要能够显示所选记录的日期属性。我目前显示其他信息。我只需要能够显示正确的日期。当我运行程序时,日期字段显示为<date>

任何帮助都会很好

3 个答案:

答案 0 :(得分:1)

您的第一个代码是正确的:

            StartDate = new DateField("Start Date ", DateField.DATE);
            cal1 = Calendar.getInstance();
            cal1.set(Calendar.YEAR, 2009);
            cal1.set(Calendar.MONTH, 0);
            cal1.set(Calendar.DAY_OF_MONTH, 1);
            StartDate.setDate(cal1.getTime());

但是对于第二个,你不能直接将日期保存到String。您必须将其转换为String,如下所示:

            String detailsToAdd =strStartDate.toString();

答案 1 :(得分:0)

您运行的区域设置是否不接受 / 作为分隔符的日期?我确信有一种独立于语言环境的方法可以在不使用字符串连接的情况下编写日期,如您的示例所示。

答案 2 :(得分:0)

您提供的代码段不使用setDate(Date)。如果您的实际代码也没有使用它,那么字段中的<date>是正确的行为 - 它会告诉您日期“未初始化”。

在这种情况下,首先使用一些简单的代码对其进行抽烟测试,例如

    eStartDate = new DateField("Start Date ", DateField.DATE);
    eStartDate.setDate(new Date());

然后,如果显示日期,请了解如何从strStartDate重新创建所需的日期参数。也就是说,如果您希望用户能够修改它,请重新创建 - 因为如果您只需要显示日期,那么使用显示所需字符串的StringItem会更简单