在 Java 中的 SimpleDateFormat 解析方法中遇到问题



我正在尝试使用 SimpleDateFormat.parse 方法将日期字符串解析为 Date 对象,但它在返回的最终日期中省略了"T"。我正在2015-04-15T12:55:07.365传递这个日期字符串,并且输出中2015-04-15 12:55:07.365。但是,所需的输出是 2015-04-15T12:55:07.365 .

为什么最终输出中的"T"被这一行省略 parsedDate = sdf.parse(transDate);

public static void main(String[] args) 
{
    try 
    {
        final String pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS";  // example 2015-04-15T12:55:07.365
        final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String transDate = "2015-04-15T12:55:07.365";
        Date parsedDate = sdf.parse(transDate);
        System.out.println("transDate:"+transDate+", parsedDate: "+parsedDate);
    } 

你永远不会得到你想要的输出2015-04-15T12:55:07.365

为什么?

因为您正在打印日期对象parsedDate。Date 类有自己的 toString() 方法实现。当你打印日期对象时,这意味着它基本上打印了toString()方法实现格式。

有关详细信息,请参阅 Java 文档

System.out.println(parsedDate)会给你Wed Apr 15 00:55:07 GMT 2015哪个是日期对象的toString()表示形式。

您可以使用SimpleDateFormat来解析日期并设置其格式:

SimpleDateFormat sdfParser = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
Date date = sdfParser.parse("2015-04-15T12:55:07.365");
SimpleDateFormat sdfFormatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
String formattedDate = sdfFormatter.format(date);
System.out.println(formattedDate);
// 2015-04-15T12:55:07.365

您将在此处获得所需的输出。

   public static void main(String args[]) {
    {
        try {
            String transDate = "2015-04-15T12:55:07.365";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
            Date date = sdf.parse(transDate);
            SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            Date d = sdf.parse(sdf.format(date));
            String formattedTime = output.format(d);
            System.out.println("transDate:" + transDate + ", parsedDate: " + formattedTime);
        } catch (Exception e) {
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新