将字符串转换为Date对象

时间:2013-04-30 14:28:23

标签: java date jodatime

我正在从一个文件中读取日期值,我将其作为字符串对象读取。

日期值以多种格式变化,例如下面的缝制:

01-Mar-2012
01/12/2012
01-12-2012
01.12.2012
01.Mar.2012
07/01/2008 12:00:00
07/01/2008 12:00:00 AM

我希望日期对象的格式是dd / mm / yyyy格式。

有很多组合。

SimpleDateFormat希望我提供格式化它的模式。

有没有办法猜测模式或从给定的字符串创建日期对象?

2 个答案:

答案 0 :(得分:2)

你怎么知道12-6-2012是12月6日还是6月12日?

你可以做的是定义一个包含所有可能模式的数组。

然后尝试解析每个数组条目的日期(如果它抛出异常,请尝试nexct模式等等)

我知道这是一次非常丑陋的尝试,但它确实有效!

答案 1 :(得分:0)

  

我希望日期对象的格式是dd / mm / yyyy格式。

java.util.Date对象没有格式 - 它包含的唯一信息是即时(具体地说,是自01-01-1970 00:00:00 GMT以来的毫秒数)。

所以,你不能拥有格式为dd / mm / yyyy的“日期对象”。 Date个对象没有格式,就像数字没有固有的格式一样。

如果要以dd / mm / yyyy格式显示日期,则必须先使用SimpleDateFormat对象将其转换为字符串;您在SimpleDateFormat对象上指定格式(而不是Date对象本身)。

// NOTE: use MM instead of mm; MM = months, mm = minutes
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

Date now = new Date();

// Display the date in the format dd/MM/yyyy
System.out.println(df.format(now));