5

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

代码 -

    // 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"));

结果:

Output - Mon Dec 31 00:00:00 NZDT 2012
Expected Output - 31/12/12

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

String string = simpleDateFormat.format(date); 

请帮我。

谢谢

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

4

4 回答 4

10

正如我最初所说,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();
}

如果您来自 JodaTime DateTime,您可以更轻松地完成这项工作,主要是在 JodaTime API 中工作。

public static Date truncateJodaDT (DateTime dt) {
    java.util.Date result = dt.toDateMidnight().toDate();
    return result;
}

希望这可以帮助!

看:


现在我又不确定了,你想要什么。您现在想要字符串格式的日期吗?

return simpleDateFormat.format( date);    // from java.util.Date

或使用 JodaTime:

return dateTime.toString( "dd/MM/yy");    // from org.joda.time.DateTime
于 2013-09-21T01:49:14.000 回答
7

这是你的做法

Format formatter = new SimpleDateFormat("dd/MM/yy");
String string = formatter.format(date);
于 2013-09-21T02:49:38.133 回答
2
于 2017-01-18T05:03:18.587 回答
0

使用 Java 8 提供的日期时间类

LocalDate parsedDate = LocalDate.parse(dateStr,DateTimeFormatter.ISO_ZONED_DATE_TIME);
于 2017-01-18T03:12:39.670 回答