我正在从一个文件中读取日期值,我将其作为字符串对象读取。
日期值以多种格式变化,例如下面的缝制:
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希望我提供格式化它的模式。
有没有办法猜测模式或从给定的字符串创建日期对象?
答案 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));