java - java中公历的错误

标签 java

我正在尝试通过 GregorianCalendar 返回 2015 年 4 月 31 日,向 CurrentDate 添加 89 天。下面是代码片段。

Calendar now = Calendar.getInstance(); 
String dt="31012013";  
now.set(Integer.parseInt(dt.substring(4)),Integer.parseInt(dt.substring(2,4)),Integer.parseInt(dt.substring(0,2))); 
now.add(Calendar.DATE, 89); 
String matdate=Integer.toString(now.get(Calendar.DATE))+ "/"+ (now.get(Calendar.MONTH) ) +"/" + now.get(Calendar.YEAR); 

执行此代码后,matdate 值为 31/04/2013

最佳答案

这是因为java.util.Calendar月份以 0 而不是 1 开头,即 4 是五月。此外,格式化日期的最佳方法是 java.text.SimpleDateFormat

    String matdate = new SimpleDateFormat("dd/MM/yyyy").format(now.getTime()));

或者更好地使用Joda-Time日历和时间相关代码的库。

关于java - java中公历的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607358/

相关文章:

java - 什么是 Java 中的 native 实现?

java - getClassLoader().getResourceAsStream() 如何在 Java 中工作

java - "Unable to instantiate activity"错误

java - 将接口(interface)的实现者强制为枚举

java - LibGdx - 平铺游戏碰撞检测

java - Android - 如何异步更新ArrayAdapter?

java - 需要一种从 JAX RS 服务中的 List<Map<String,String> 生成 JSON 的方法。 jackson 2

java - 在 Java 中创建迷宫求解算法

java - 在 Viewmodel 中访问 BroadCastReceiver

64 位 jvm 上的 Java 内存不足