在java中将dateTime转换为dd/MM/yy格式的日期

Sar*_*ara 3 java datetime date

我有一个JODA DateTime 2012-12-31T13:32:56.483+13:00.我想将它转换为日期dd/MM/yy格式.所以我期待代码返回日期,如 - 2012年12月31日.

代码 -

    // Input dateTime = 2012-12-31T13:32:56.483+13:00
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
    Date date = simpleDateFormat.parse(dateTime.toString("dd/MM/yy"));
Run Code Online (Sandbox Code Playgroud)

结果:

Output - Mon Dec 31 00:00:00 NZDT 2012
Expected Output - 31/12/12
Run Code Online (Sandbox Code Playgroud)

当我执行以下操作时,我得到了预期的输出,但我不知道如何将其转换为Date-

String string = simpleDateFormat.format(date); 
Run Code Online (Sandbox Code Playgroud)

请帮我.

谢谢

编辑 - 我希望我的最终结果是以dd/MM/yy格式的Util Date.我不想要String输出.我的输入是Joda DateTime yyyy-MM-ddThh:mm:ss:+ GMT.我需要将JodaDateTime转换为UtilDate.

Tho*_*s W 8

正如我原先所说,Date对象没有固有的格式.java.util.Date保持毫秒时间值,表示日期和时间.日期通过您选择的DateFormat从字符串解析或格式化为字符串.

字符串可以按照规范进行格式化,但它们后面的Date对象始终是完全精确的,并且没有任何固有的格式概念.


要将组合的"日期和时间"截断为java.util.Date日期组件,请将其有效地留在午夜:

public static Date truncateTime (Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime( date);
    cal.set( Calendar.HOUR_OF_DAY, 0);
    cal.set( Calendar.MINUTE, 0);
    cal.set( Calendar.SECOND, 0);
    cal.set( Calendar.MILLISECOND, 0);
    return cal.getTime();
}
Run Code Online (Sandbox Code Playgroud)

如果你来自JodaTime DateTime,你可以更容易地在JodaTime API中工作.

public static Date truncateJodaDT (DateTime dt) {
    java.util.Date result = dt.toDateMidnight().toDate();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

看到:


现在我再次不确定,你想要什么.您现在想要字符串格式的日期吗?

return simpleDateFormat.format( date);    // from java.util.Date
Run Code Online (Sandbox Code Playgroud)

或者使用JodaTime:

return dateTime.toString( "dd/MM/yy");    // from org.joda.time.DateTime
Run Code Online (Sandbox Code Playgroud)


kdu*_*idy 7

这是你如何做到的

Format formatter = new SimpleDateFormat("dd/MM/yy");
String string = formatter.format(date);
Run Code Online (Sandbox Code Playgroud)