使用Calendar需要注意clear

  date是前台传的值,格式为2014-01-01的形式:如下的代码是去date日期当月的最大天数日期

int month_ = Integer.parseInt(date.substring(5,7)); //取天数
int year = Integer.parseInt(date.substring(0,4));//取年份
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Calendar cal = Calendar.getInstance();
cal.clear();//必须使用,否则会继承自系统当前时间 //这行数据一定不能省,否则会继承系统当前的时间

//之前在项目中一直遇到这种问题,输二月份,结果得到30或31天。只要有set的方法必须clear.
cal.add(Calendar.YEAR, year);
// 下面可以设置月份,注:月份设置要减1,所以设置1月就是1-1,设置2月就是2-1,如此类推
cal.set(Calendar.MONTH, month_ - 1);
// 调到上个月
// cal.add(Calendar.MONTH, -1);
// 得到一个月最最后一天日期(31/30/29/28)
int MaxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 按你的要求设置时间
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), MaxDay, 23,
59, 59);
String now_date = sdf.format(cal.getTime());

int year = Integer.parseInt(date.substring(0,4));
System.out.println("month_:"+month_);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Calendar cal = Calendar.getInstance();
cal.clear();//必须使用,否则会继承自系统当前时间
cal.add(Calendar.YEAR, year);
// 下面可以设置月份,注:月份设置要减1,所以设置1月就是1-1,设置2月就是2-1,如此类推
cal.set(Calendar.MONTH, month_ - 1);
// 调到上个月
// cal.add(Calendar.MONTH, -1);
// 得到一个月最最后一天日期(31/30/29/28)
int MaxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 按你的要求设置时间
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), MaxDay, 23,
59, 59);
String now_date = sdf.format(cal.getTime());
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值