在JSON响应中格式化DATE

时间:2012-03-01 11:29:17

标签: java json

我在json回复中得到如下日期。

{"dateTime":"2012-03-03T10:00:00.890+05:30"}

我想在java中使用2012年3月3日10Am。如何格式化此日期

4 个答案:

答案 0 :(得分:0)

在JS中,此日期采用标准格式,因此新日期(object.dateTime)将解析您的日期。然后使用toGMTString或toLocalString,您将拥有正确的格式。 您只需要删除返回的字符串的前4个和后4个字符。

答案 1 :(得分:0)

您使用什么语言显示日期?

您必须将该值解析为日期,然后您可以更改该日期显示的格式。

答案 2 :(得分:0)

如果您想在 Java 中执行此操作,请使用SimpleDateFormat,如下所示:

修改 为了与您的场景相匹配,我按如下方式对其进行了编辑:

String input = "2012-03-03T10:00:00.890+05:30";

在上面的input字符串中,您必须从时区部分: colon中删除+05:30。您可以使用正则表达式执行此操作,如this post中所示。然后使用以下代码以您的格式转换它:

DateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
DateFormat newFormat = new SimpleDateFormat("dd MMMMM yyyy hha");

String dateStr = newFormat.format(oldFormat.parse(input));

答案 3 :(得分:0)

answer by Kuldeep Jain是正确的。但是应该避免使用java.util.Date/Calendar类,因为它们的设计和实现都很糟糕。

而是使用Joda-Time,或者在Java 8中使用新的java.time。*类(受Joda-Time启发)。

虽然Joda-Time允许您定义自己的specific formats进行解析,但在您的情况下则不需要。 Joda-Time的DateTime类的构造函数已经构建,用于解析您正在使用的ISO 8601格式。

示例代码......

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTimeZone timeZone_Kolkata = DateTimeZone.forID( "Asia/Kolkata" );

String input = "2012-03-03T10:00:00.890+05:30";
DateTime dateTime = new DateTime( input );
DateTime dateTimeInUtc = dateTime.toDateTime( DateTimeZone.UTC );
DateTime dateTimeInKolkata = dateTime.toDateTime( timeZone_Kolkata );

DateTimeFormatter formatter = DateTimeFormat.forStyle("LS").withLocale( new Locale( "en", "IN" ) ); // English, India.
String output = formatter.print( dateTime );

转储到控制台...

System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTimeInUtc: " + dateTimeInUtc );
System.out.println( "dateTimeInKolkata: " + dateTimeInKolkata );
System.out.println( "output: " + output );

跑步时......

dateTime: 2012-03-02T20:30:00.890-08:00
dateTimeInUtc: 2012-03-03T04:30:00.890Z
dateTimeInKolkata: 2012-03-03T10:00:00.890+05:30
output: 2 March, 2012 8:30 PM