我有一个日期字符串,格式为:
"20120514045300.0Z"
我正在尝试将此内容转换为以下格式。
"2012-05-14-T045300.0Z"
你认为我应该如何解决这个问题?(内容涉及it技术)
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.
yyyy-MM-dd'T'HHmmss.'0Z'
应该是 yyyy-MM-dd'-T'HHmmss.'0Z'
。因为你的方式会打印出 2012-05-14T045300.0Z
而不是 2012-05-14-T045300.0Z
。 - npintiSimpleDateFormat
来完成。你还可以查看这个问题以获取更多详细信息。对于这么简单的事情,您不一定需要使用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 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);
}