在java中格式化包含日期的字符串时出现问题

基本上我有一个包含日期的字符串,我试图让它在只有 1 位数字的月份和日期前面打印出 0。所以 1 会打印出 01。这是我编写的代码,但我收到一条错误消息:线程“main”java.util.IllegalFormatConversionException 中出现异常:d!= java.lang.String。

day = String.format("%02d", day);


GCT1015
浏览 92回答 2
2回答

函数式编程

假设这day是一个int然后与day = String.format("%02d", day);您正在尝试将字符串重新分配给int尝试String dayStr = String.format("%02d", day);编辑所以既然day已经是那么就行不通意味着它是一个Stringformat("%02d", day);dint所以将其转换为int第一个day = String.format("%02d", Integer.valueOf (day));

绝地无双

如果允许我退后一步:这可能有点像设计问题。您不应该将日期存储在格式的字符串中dd/mm/yyyy。您应该将日期存储在LocalDate. 当然,如果日期是字符串输入,例如来自用户,您需要接受这样的字符串。然后转换为LocalDate:    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d/M/u");    String dateString = "1/9/2019";    LocalDate date = LocalDate.parse(dateString, dateFormatter);要将月份中的某一天格式化为两位数,请使用另一个DateTimeFormatter:    DateTimeFormatter dayOfMonthFormatter = DateTimeFormatter.ofPattern("dd");    String dayString = date.format(dayOfMonthFormatter);    System.out.println("Day in two digits is " + dayString);这种情况下的输出是:两位数的日期是 01或者输出带有两位数日期和两位数月份的完整日期:    DateTimeFormatter outputDateFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu");    String outputString = date.format(outputDateFormatter);    System.out.println("Output: " + outputString);输出:2019年1月9日
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java