3

早些时候我发布了以下问题:如何在 Java 中转换此日期?

但现在我想知道如何将此字符串转换为日期/时间。

2010-03-15T16:34:46Z

例如:2010 年 3 月 15 日

更新:

String pattern = "MM/dd/yy 'at' HH:mm";
                Date date = new Date();
                try {
                    date = new SimpleDateFormat(pattern).parse(q.getUpdated_at());
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

给我这样的结果:

Mon Mar 15 16:34:50 MST 2010

我怎样才能将其格式化为

03/15/10 at 4:34PM

?

4

3 回答 3

8

SimpleDateFormat和joda -time DateTimeFormat都可以解析这个,使用这个模式:

String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";

例如:

Date date = new SimpleDateFormat(pattern).parse(dateString);

和(乔达时间):

DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(s);

更新

您有 2 种日期格式 - 一种用于解析输入,一种用于格式化输出。所以:

dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

(当然,为了优化,可以SimpleDateFormat只实例化一次,复用)

于 2010-09-25T19:51:08.077 回答
2

简而言之,您希望将字符串格式的日期转换一种字符串格式日期。你有:

2010-03-15T16:34:46Z

你想要

03/15/10 at 4:34PM

您不想像java.util.Date最初在问题中暗示的那样最终使用对象。您也不想使用它toString(),因为它会返回其 javadoc中定义的固定格式。

Bozho的回答仍然适用。使用java.text.SimpleDateFormat. 首先,您需要将字符串格式的日期解析为一个Date对象,以便您可以将其格式化回另一种字符串格式。

// First parse string in pattern "yyyy-MM-dd'T'HH:mm:ss'Z'" to date object.
String dateString1 = "2010-03-15T16:34:46Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(dateString1);

// Then format date object to string in pattern "MM/dd/yy 'at' h:mma".
String dateString2 = new SimpleDateFormat("MM/dd/yy 'at' h:mma").format(date);
System.out.println(dateString2); // 03/15/10 at 4:34PM
于 2010-09-26T18:47:58.380 回答
0

如果要格式化输出字符串,请更改代码中的以下行

dateText.setText(date.toString());

dateText.setText(String.format("%1$tm/%1$td/%1$ty at %1$tl:%1$tM%1$Tp", date));
于 2010-09-26T10:03:41.110 回答