如何格式化日期/时间字符串?(Java)

3

大家好,请问有人可以帮忙吗?我正在尝试格式化一个日期和时间字符串。目前它看起来像这样 "20160112T110000Z",我需要它变成 "2016-01-12T11:00:00Z"。

第三方重复库返回的字符串没有特殊字符。我需要将其转换为具有特殊字符的字符串,然后将其解析为 Calendar 对象。

请问有谁能帮忙吗?

我目前的代码如下:

 final String TIMEFORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
 String string = "20160112T110000Z";
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    Date date = format.parse(string);
    System.out.println(date); 

然而,这并不起作用。

欢迎任何建议。


请提供样例代码的输出结果。 - Jokab
为什么你必须先转换它?使用不同的SDF解析有什么问题吗? - Zircon
1
你只需要使用正确的格式将其解析为日期,然后使用“SimpleDateFormat format”将其格式化为目标格式。 - Tom
1
阅读此 https://dev59.com/InE85IYBdhLWcg3w03Dz 线程的最佳答案,您将得到您的答案。 - Saif
这个回答解决了你的问题吗?将日期字符串解析为java.util.Date时出现“T”非法模式字符 - Ian Kemp
2个回答

10

您需要按照源格式读取字符串,这样可以得到正确的Date

然后只需按照您想要的格式编写它:

    String string = "20160112T110000Z";

    String originalStringFormat = "yyyyMMdd'T'HHmmss'Z'";
    String desiredStringFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'";

    SimpleDateFormat readingFormat = new SimpleDateFormat(originalStringFormat);
    SimpleDateFormat outputFormat = new SimpleDateFormat(desiredStringFormat);

    try {
        Date date = readingFormat.parse(string);
        System.out.println(outputFormat.format(date));
    } catch (ParseException e) {

        e.printStackTrace();
    }

1
谢谢您的解释。我现在理解了逻辑。非常感激。 - Wil Ferraciolli

-1

试一下这个

DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
   // you can change format of date
  Date date = formatter.parse(strDate);
  Timestamp timeStampDate = new Timestamp(date.getTime());

  return timeStampDate;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接