我在json回复中得到如下日期。
{"dateTime":"2012-03-03T10:00:00.890+05:30"}
我想在java中使用2012年3月3日10Am。如何格式化此日期
答案 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