使用Century格式化日期

时间:2015-02-24 11:09:13

标签: java simpledateformat date-formatting date-conversion

我有办法将包含世纪的日期格式化为通用格式。 格式化日期为cyymmdd至MM / dd / yyyy。

实施例,

Convert 1140711 to o7/11/2014

2 个答案:

答案 0 :(得分:1)

如果您正在谈论以格式转换字符串:

1140711

2014年7月11日

    DateFormat df1 = new SimpleDateFormat("yyddMM");
    DateFormat df2 = new SimpleDateFormat("dd/MM/yyyy");
    String dateString = "1140711";

    System.out.println(df2.format(df1.parse(dateString.substring(1, dateString.length()))));

答案 1 :(得分:0)

据我所知,唯一能够处理世纪领域的日期时间库是Joda-Time。

LocalDate date = DateTimeFormat.forPattern("CyyMMdd").parseLocalDate("1140711");
System.out.println("Century=" + date.getCenturyOfEra()); // 20
String usFormat = DateTimeFormat.forPattern("MM/dd/yyyy").print(date);
System.out.println(usFormat); // output: 07/11/2014

正如您所看到的那样,世纪的输入数字“1”被忽略,因为Joda-Time仅将其他字段评估为有效日期。我个人会拒绝这样一个世纪的输入,因为我们是21世纪的世纪,而不是1世纪。所以Joda-Time在这里有其局限,但你真的确定你的输入中有一个世纪的1,或者这只是一个错字吗?