_Slience_ 2016-12-31 07:43 采纳率: 50%
浏览 1213
已结题

Java一年中最后一天计算月份出现错误

        Date date = Date.valueOf("2016-12-31");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
        String month = format.format(date);
        String start = month + "-01 00:00:00";
        String end = month + "-31 23:59:59";

        for(int i = 0; i < 3; i++) {
            System.out.println("before=" + date.getMonth());
            date.setMonth(date.getMonth()-1);
            System.out.println("after=" + date.getMonth());
            month = format.format(date);
            start = month + "-01 00:00:00";
            end = month + "-31 23:59:59";
        }

运行结果

before=11
after=11
before=11
after=10
before=10
after=9

如果改成2016-12-30的话月份计算就正常了,请问是什么原因呢?

  • 写回答

4条回答 默认 最新

  • threenewbee 2016-12-31 08:10
    关注

    http://blog.csdn.net/sd0902/article/details/8393650
    看里面的 addMonth (如果减,用负数)

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题