2012-03-01 94 views
0

我在json響應中獲取如下所示的日期。在JSON響應中格式化日期

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

我希望在java中顯示它像3月2012年10Am。如何格式化這個日期

+0

取決於所使用解析JSON對象的平臺上。例如,在PHP中,您可以使用date()函數:http://php.net/strtodate – 2012-03-01 11:32:09

回答

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)); 
+0

它的工作原理。謝謝回覆:) – techiee 2012-03-05 05:46:51

0

在JS中,這個日期是標準格式,所以新的日期(object.dateTime)將解析你的日期。然後通過使用toGMTString或toLocalString你將有正確的格式。 你只需要去掉返回的字符串的第一個字符和第四個字符。

0

你用什麼語言顯示日期?

您必須將該值解析爲日期,然後才能更改該日期的顯示格式。

+0

抱歉。忘了提及它。在java語言 – techiee 2012-03-01 14:34:29

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