2

我这样做是为了设置日期格式,然后将其转换为日期数据类型,但它没有给出预期的结果。

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
 DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
 String cur_date=dateFormat.format(new Date());
 myDb.setDOB(formatter.parse(cur_date));

场景是:我希望将当前日期转换为 yyyy/mm/dd,然后将其传递给 setDOB(Date date)。

编辑:添加结果结果是 Tue Jan 01 00:08:00 IST 2013

伙计们!我没有使用'mm',这里我只是在 DateFormat 中错误地写了 mm 它也是 MM

再次编辑首先我只使用了 setDOB(new Date() ); 但有格式问题,

然后我使用 SimpleDateFormat.format 设置 yyyy/MM/dd 但它返回 String so used

DateFormat.parse 将其转换回日期类型。

4

7 回答 7

4

您没有使用相同的格式。案件很重要!“MM”代表月份,“mm”代表分钟。

于 2013-08-01T08:06:58.147 回答
2

问题是你的MM格式。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/mm/dd");
  • MM是月份
  • 毫米是分钟

有关详细格式,请参阅此处。所以应该是,

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
于 2013-08-01T08:07:28.840 回答
2

+1 mael 首先发现格式问题,但是...

Date是自纪元 (Jan-1970-01-01 GMT) 以来的毫秒数的容器,它不关心值的格式。

例如,以下...

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
Date now = new Date();
String cur_date = dateFormat.format(now);

try {
    System.out.println("Now = " + now);
    System.out.println("cur_date = " + cur_date);
    System.out.println("dateFormat.parse(cur_date) = " + dateFormat.parse(cur_date));
} catch (ParseException exp) {
    exp.printStackTrace();
}

输出...

Now = Thu Aug 01 18:08:39 EST 2013
cur_date = 2013/08/01
dateFormat.parse(cur_date) = Thu Aug 01 00:00:00 EST 2013

所以你可以通过这样做丢失有关日期的重要数据......

将格式化保留在您想要显示值的时候,而不是在您想要存储它的时候(如果您可以侥幸逃脱的话)

于 2013-08-01T08:10:30.327 回答
1

听起来您希望 a Date“知道”它的格式。它没有。一个Date对象包含自 Unix 纪元以来的毫秒数。它不知道时区、日历或字符串格式。这只是一个约会。

所以你的代码应该是:

myDb.setDOB(new Date());

...然后在您显示它的任何地方处理它的格式。

于 2013-08-01T08:11:05.453 回答
0

您正在使用不同的日期字符串模式。MM 代表月,mm 代表分钟(请参阅SimpleDateFormat API

您的 setDOB 正在使用 Date 对象。我不明白为什么在将日期作为方法调用中的参数时可能要格式化日期。通常,当需要在某处呈现/存储日期时,它会格式化日期。

于 2013-08-01T08:10:06.647 回答
0

formatter.parse 用于解析 String Date,它返回Date Object。日期表示为 Date 对象或自1970 年 1 月 1 日 00:00:00 GMT以来的毫秒数。我没有得到你实际上在做什么。日期对象始终以上述格式表示。

于 2013-09-26T12:37:51.930 回答
0
于 2017-04-18T07:19:03.857 回答