Android Java中Calendar日期格式化问题:月份显示异常
问题解决:日期格式化中月份显示错误的原因与修复
哈哈,一眼就找到问题啦!你看到的22-42-2018这种奇怪结果,核心原因是日期格式符用错了:
- 你代码里的
SimpleDateFormat("dd-mm-yyyy")中,小写的mm代表的是分钟(minute),不是月份!这就是为什么会出现42这种超出月份范围的数字——它其实是当前时间的分钟数。 - 正确表示月份的格式符是大写的
MM,这样才会解析/格式化日期中的月份部分。
修正后的代码
// 把格式符里的mm改成MM SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); Calendar cal = Calendar.getInstance(); // 获取当前日期作为账单日期(format返回的就是String,无需额外toString()) String billdate = dateFormat.format(cal.getTime()); // 月份加1,计算到期日期 cal.add(Calendar.MONTH, 1); String duedate = dateFormat.format(cal.getTime());
额外小优化
dateFormat.format()方法本身返回的就是String类型,所以你原来的.toString()是多余的,可以直接去掉,让代码更简洁。
这样修改后,就能正确显示两位数字的月份了,比如1月会显示为01,10月显示为10,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Umang
相关产品推荐
相关产品推荐

