为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

GCT1015 2023-09-20 16:25:29
基本上我有一个包含日期的字符串,我试图让它在只有 1 位数字的月份和日期前面打印出 0。所以 1 会打印出 01。这是我编写的代码,但我收到一条错误消息:线程“main”java.util.IllegalFormatConversionException 中出现异常:d!= java.lang.String。day = String.format("%02d", day);
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

假设这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));


查看完整回答
反对 回复 2023-09-20
?
绝地无双

TA贡献1946条经验 获得超4个赞

如果允许我退后一步:这可能有点像设计问题。您不应该将日期存储在格式的字符串中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日



查看完整回答
反对 回复 2023-09-20
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信