Java 如何将字符串日期转换为ISO日期格式日期

Java 如何将字符串日期转换为ISO日期格式日期,java,Java,我有一个字符串日期“2020年1月4日晚上9:00”。我想把它转换成ISO日期格式。正在寻找将其转换为ISO日期格式的优化方法,请尝试以下代码: public static void main(String[] args) { String dateString = "04/01/2020 at 9:00PM"; DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy 'at' hh:mma");

我有一个字符串日期“2020年1月4日晚上9:00”。我想把它转换成ISO日期格式。正在寻找将其转换为ISO日期格式的优化方法,请尝试以下代码:

    public static void main(String[] args) {
        String dateString = "04/01/2020 at 9:00PM";
        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy 'at' hh:mma");

        try {
            Date date = dateFormat.parse(dateString);
            System.out.println(date);
        } catch(ParseException exception) {
            System.out.println(exception.getMessage());
        }
    }
查看此帖子以了解更多信息:

更新

根据Mark Rotterveel的建议,DateTimeFormatter是一个更好的API,用于在java 8中格式化日期,因此这应该是首选:

   public static void main(String[] args) {
        String dateString = "12/12/2020 at 09:00PM";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy 'at' hh:mma", Locale.ENGLISH);
        try {
            LocalDateTime dateTime = LocalDateTime.parse(dateString, dateTimeFormatter);
            System.out.println(dateTime);
        } catch (DateTimeException exception) {
            System.out.println(exception.getMessage());
        }
    }
请尝试以下代码:

    public static void main(String[] args) {
        String dateString = "04/01/2020 at 9:00PM";
        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy 'at' hh:mma");

        try {
            Date date = dateFormat.parse(dateString);
            System.out.println(date);
        } catch(ParseException exception) {
            System.out.println(exception.getMessage());
        }
    }
查看此帖子以了解更多信息:

更新

根据Mark Rotterveel的建议,DateTimeFormatter是一个更好的API,用于在java 8中格式化日期,因此这应该是首选:

   public static void main(String[] args) {
        String dateString = "12/12/2020 at 09:00PM";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy 'at' hh:mma", Locale.ENGLISH);
        try {
            LocalDateTime dateTime = LocalDateTime.parse(dateString, dateTimeFormatter);
            System.out.println(dateTime);
        } catch (DateTimeException exception) {
            System.out.println(exception.getMessage());
        }
    }

我建议切换到
java.time
格式化程序,而不是使用我已经尝试过的
SimpleDateFormat
之类的旧类,但我无法真正了解DateTimeFormatter。也许你可以发布一个使用DateTimeFormatter@MarkRotteveel我已经更新了我的答案。要求使用ThanksISO日期格式。虽然第一个示例没有提供这一点,但是使用的示例确实打印ISO 8601格式,因为java.time类本机就这样做了。输出为
2020-12-12T21:00
。谢谢。我建议切换到
java.time
格式化程序,而不是使用我已经尝试过的
SimpleDateFormat
之类的旧类,但我无法真正了解DateTimeFormatter。也许你可以发布一个使用DateTimeFormatter@MarkRotteveel我已经更新了我的答案。要求使用ThanksISO日期格式。虽然第一个示例没有提供这一点,但是使用的示例确实打印ISO 8601格式,因为java.time类本机就这样做了。输出为
2020-12-12T21:00
。谢谢。