我有(yyyy-mm-ddTHH:mm + 0:0000)的時間格式..我需要將此格式轉換爲mm-dd-yyyy hh:mm am/pm使用java程序...任何人都可以幫助我做到這一點..事先預先...在java中解析日期和時間
回答
看看java.text.SimpleDateFormat
- 你需要兩個實例,一個用於解析,一個用於格式化。
嘗試是這樣的:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm+s:SSSS");
Date date = format.parse(dateString);
format = new SimpleDateFormat("MM-dd-yyyy hh:mm a");
dateString = format.format(date);
在第二種格式中,它採用當前(本地)時區。如果您不想使用默認設置,請提供自己的設備。 – 2011-03-09 12:41:32
你可以做聖保羅和morja說什麼,或者只是使用String.substring(),因爲你的分析,要求非常簡單。
您應該從String中創建Data對象 - >使用適當的類(例如SimpleDataFormat),然後使用其他格式打印它。
見工作實例,此代碼片段:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTimeAMPM {
public static void main(String[] args) throws ParseException {
DateFormat inputDateFormatter = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm+s:SSSS");
Date date = inputDateFormatter.parse("2011-11-11T22:33+0:400");
String outputDateFormatter = "MM-dd-yyyy HH:mm:ss a";
SimpleDateFormat sdf = new SimpleDateFormat(outputDateFormatter);
System.out.println("Date: " + sdf.format(date));
}
}
這裏的現代答案。 SimpleDateFormat
是在2011年問題被問及時的正確答案,但現在已不復存在。舊的課程結果很麻煩,所以最終他們的替代品在2014年初出現。
我對您的格式中的一些細節有點困惑。
yyyy-mm-ddTHH:mm+0:0000
看起來有點像一個ISO 8601偏移日期時間,但隨後+0:0000
應該從UTC偏移。我猜測它可能已被作爲h:mmss
格式的抵消,但它是非標準的,並且我從未見過其他地方。- 您似乎在以小寫字母am/pm的方式提問。這也是非標準的,並且不是標準類內置的。
我建議:
DateTimeFormatter sourceFormat
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm'+0:0000'");
DateTimeFormatter targetFormat
= DateTimeFormatter.ofPattern("MM-dd-uuuu hh:mm a", Locale.ENGLISH);
String sourceTime = "2017-07-05T20:31+0:0000";
String convertedTime = LocalDateTime.parse(sourceTime, sourceFormat)
.format(targetFormat)
.toLowerCase(Locale.ENGLISH);
System.out.println(convertedTime);
這將打印
07-05-2017 08:31 pm
我發現它最安全只是需要在輸入文字+0:0000
,不是要解釋它。爲了生成小寫的pm
,我在格式化後將整個字符串轉換爲小寫字母。有一個不同的技巧in this answer。
試圖要與小時,分鐘和秒的偏移更靈活,使他們的感覺可能是:
sourceTime = sourceTime.replaceFirst("(\\d:\\d{2})(\\d{2})$", "0$1:$2");
String convertedTime = OffsetDateTime.parse(sourceTime)
.format(targetFormat)
.toLowerCase(Locale.ENGLISH);
的replaceFirst
轉換0:0000
到00:00:00
,當被+
preceeded或-
與符合ISO 8601膠印。這也可以與其他偏移量一起使用(只要小時是一位數字;您可能需要依次嘗試一位數字和兩位數字)。在具體的代碼中,我們仍然忽略格式化時的偏移量,但如果需要它可以用於其他目的。
DateTimeFormatter
,LocalDateTime
和OffsetDateTime
是JSR-310的一部分。它們是在Java 8及更高版本中構建的。您也可以通過ThreeTen Backport在Java 6和7中使用它們。還有一個特定版本的Android的backport,ThreeTenABP。
- 1. 解析日期時間到JAVA日期
- 2. 解析日期和時間
- 3. 解析日期和時間
- 4. 在JavaScript中解析日期和時間
- 5. Java解析XML日期 - 排除時間
- 6. 在Java中解析日期
- 7. 在PowerShell中解析日期時間
- 8. 在revel中解析json日期時間
- 9. 在Java中區分和解析日期
- 10. 解析SMS日期/時間
- 11. 解析日期時間
- 12. 解析日期時間
- 13. 日期時間Python解析
- 14. 解析器日期時間
- 15. 解析日期時間HHMMSS
- 16. 解析日期時間
- 17. C++日期時間解析
- 18. 在java中轉換UTC時間時解析日期異常
- 19. C#解析日期和時間
- 20. 解析日期和時間 - javascript
- 21. 難以解析日期和時間Android
- 22. WCF和日期時間解析?
- 23. JSON解析日期和時間?
- 24. 日期和時間字符串解析
- 25. 解析修改日期和時間
- 26. 日期時間轉換和解析
- 27. 的Java解析日期時間毫秒爲日期越來越解析錯誤
- 28. 如何在日期和時間使用Laravel解析日期時間?
- 29. 解析日期時間從美國時區到日期時間。
- 30. 在java中解析HTTP 1.0標頭日期/時間戳
所以你有一個'字符串',並且你想把它轉換成另一個字符串? – Bozho 2011-03-09 12:35:56
你能解釋更多嗎?字符串從哪裏來? XML?它在哪裏? Swing GUI? – Puce 2011-03-09 13:08:33