[英]Specific date format from date string in java
我有一個日期字符串
"20120514045300.0Z"
我正在試圖弄清楚如何將其轉換為以下格式
"2012-05-14-T045300.0Z"
你怎么建議我解決它?
您應該將日期解析為適當的表示形式,並從該表示格式解析輸出,而不是潛入難以閱讀的字符串操作代碼。 如果可能的話,我建議你堅持使用一些現有的API。
這是基於SimpleDateFormat
的解決方案。 (它雖然硬編碼了0Z
部分。)
String input = "20120514045300.0Z";
DateFormat inputDF = new SimpleDateFormat("yyyyMMddHHmmss'.0Z'");
DateFormat outputDF = new SimpleDateFormat("yyyy-MM-dd'-T'HHmmss.'0Z'");
Date date = inputDF.parse(input);
String output = outputDF.format(date);
System.out.println(output); // Prints 2012-05-14-T045300.0Z as expected.
(改編自: 如何從給定的字符串中獲取日期部分? )
您需要解析日期並將其格式化為所需的表單。 使用SimpleDateFormat
來完成它。 您還可以查看此問題以獲取更多詳細信息。
您不必使用DateFormat
來處理這么簡單的事情。 您知道原始日期字符串的格式是什么,並且您不需要Date
對象,您需要一個String
。 因此,只需將其直接轉換為String
(不創建中間Date
對象),如下所示:
String s = "20120514045300.0Z";
String formatted = s.substring(0, 4) + '-' + s.substring(4, 6) + '-' + s.substring(6, 8) + "-T" + s.substring(8);
您甚至可以按如下方式使用StringBuilder
(盡管由於數組復制,這有點效率低):
StringBuilder sb = new StringBuilder(s);
sb.insert(4, '-').insert(7,'-').insert(10,"-T");
String formatted = sb.toString();
如果你只需要重新格式化字符串,你可以使用類似的東西:
String str = "20120514045300.0Z";
Pattern p = Pattern.compile("^(\\d{4})(\\d{2})(\\d{2})(.+)$");
Matcher m = p.matcher(str);
if (m.matches())
{
String newStr = m.group(1) + "-" + m.group(2) + "-" + m.group(3) + "-T" + m.group(4);
System.out.println(newStr);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.