如何使用 Java 在字符串中格式化日期?[复制]

How to format a date inside a String with Java? [duplicate]

提问人:Root93 提问时间:5/12/2023 更新时间:5/12/2023 访问量:88

问:

我有一个接收以下日期格式的字符串(yyyy-MM-dd ...)

"2023-03-13 12:00:02"

我需要将格式更改为以下格式(dd-MM-yyyy ...

"13-03-2023 12:00:02.000000000"

我尝试构建以下方法,但它不起作用,我也不太清楚它应该如何

String formatoFechaFinBd(String dateService) throws ParseException {
        Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(dateService);
        
        String formattedDate = new SimpleDateFormat("dd/MM/yyyy, Ka").format(date);
        return formattedDate;
    }

我怎样才能进行我需要的转换,以便在字符串中获取该日期格式

Java simpledateformat 日期格式

评论

2赞 MadProgrammer 5/12/2023
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"与 - 您的解析格式需要匹配预期的输入,否则它将无法正常工作。我还鼓励您停止使用基于日期/时间的类,而是使用较新的 API"2023-03-13 12:00:02"Stringjava.utiljava.time
3赞 MadProgrammer 5/12/2023
我假设您尝试呈现纳秒而不是毫秒,这不支持,相反,您应该尝试使用更类似的东西SimpleDateFormatLocalDateTime.parse(dateService, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).format(DateTimeFormatter.ofPattern("dd/MM/yyyy, HH:mm:ss.nnnnnnnn"))
2赞 Anonymous 5/12/2023
我强烈建议您不要使用 和 .这些课程设计得很差,而且早已过时,前者尤其令人烦恼。请改用 和 ,两者都来自 java.time,即现代 Java 日期和时间 APISimpleDateFormatDateLocalDateTimeDateTimeFormatter
0赞 Anonymous 5/13/2023
LocalDateTime .parse("2023-03-13 12:00:02", DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss")) .format(DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss.SSSSSSSSS")).它产生 .13-03-2023 12:00:02.000000000

答:

0赞 baoyinlei 5/12/2023 #1
static String formatoFechaFinBd(String dateService) throws ParseException {
        Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateService);
        String formattedDate = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss.SSSSSSSSS").format(date);
        return formattedDate;
    }

评论

3赞 Anonymous 5/12/2023
感谢您的贡献。强烈建议不要这样做。我们都应该很久以前就停止使用,因为它使用起来很麻烦。使用 java.time,moddern java 日期和时间 API。当你使用它时,要注意格式模式字母的情况。你不想要小写。SimpleDateFormatDateTimeFormatterhh
1赞 user16320675 5/12/2023
此外,如果使用(12 小时格式)(例如 将返回 ) || 如果输入格式有毫秒,也会出错SimpleDateFormathhformatoFechaFinBd("2022-10-20 15:16:17")"20-10-2022 03:16:17.000000000"SSSSSSSSS