2020-04-03 20:17:46 到 "yyyy-MM-dd'T'HH:mm:ss" 格式

2020-04-03 20:17:46 to "yyyy-MM-dd'T'HH:mm:ss" format

在 java(java.util.* 或 Joda api )中有什么方法可以将“2020-04-03 20:17:46”转换为 "yyyy-MM-dd'T'HH:mm:ss"

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
          .parse("2020-04-03 20:17:46")

它给予 java.text.parseException 总是

这对你有帮助吗? http://tutorials.jenkov.com/java-internationalization/simpledateformat.html

首先你需要解析旧格式的字符串,你会得到一个日期对象。然后用你的新格式创建一个新的 SimpleDateFormat,然后你可以格式化 Date 对象。

    String dateString = "2020-04-03 20:17:46";
    SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf.parse(dateString);
    String formattedDate = output.format(date);

它不会直接那样工作,但如果你仍然想这样做,这是过程。

创建具有模式 "yyyy-MM-dd HH:mm:ss")

的 SimpleDateFormat 对象

使用它来解析字符串。最终你会在这两种情况下得到约会。对于不包含它们的日期,在模式中使用 T 是否有任何特定原因?

如果您使用 Java 8 或更高版本,请使用 java.time
看这个简单的例子:

public static void main(String[] args) {
    // example datetime
    String datetime = "2020-04-03 20:17:46";
    // create a formatter that parses datetimes of this pattern
    DateTimeFormatter parserDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    // then parse the datetime with that formatter
    LocalDateTime ldt = LocalDateTime.parse(datetime, parserDtf);
    // in order to output the parsed datetime, use the default formatter (implicitly)
    System.out.println(ldt);
    // or format it in a totally different way
    System.out.println(ldt.format(
            DateTimeFormatter.ofPattern("EEE, dd. 'of' MMM 'at' hh-mm-ss a",
                    Locale.ENGLISH)
            )
    );
}

这输出

2020-04-03T20:17:46
Fri, 03. of Apr at 08-17-46 PM

请注意,这不考虑任何时区或偏移量,它仅表示由传递或解析的年、月、日、小时、分钟和秒组成的日期和时间,仅此而已。

不要使用 java.util.* 中的 Date/Time API,因为它们中的大多数现在是 outdated. Use java.time API。

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {

    public static void main(String[] args) throws IOException {
        String strDatetime = "2020-04-03 20:17:46";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parsedDate = LocalDateTime.parse(strDatetime, formatter);
        System.out.println(parsedDate);
    }
}

输出:

2020-04-03T20:17:46

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

了解有关 DateTimeFormatter 的更多信息

使用 LocalDateTime。

    Timestamp timestamp = Timestamp.parse("2020-04-03 20:17:46");

    LocalDateTime localDateTime = timestamp.toLocalDateTime();  

    System.out.println(localDateTime); // 2020-04-03T20:17:46