Java中获取去年最后一天的日期

String olddateTime = String.valueOf(Integer.parseInt(dateTime.substring(0, 4))-1)+"-12-31";

dateTime 是输入的日期 格式是String 如:2018-12-05
我的思路是 先将获取到的字符串截取前4个字符,也就是2018,然后强转为整型 -1 ,就是2017(也就是去年)然后再转为String型,再拼接 “-12-31”,就成了 2017-12-31(也就是去年最后一天的日期),我想问问大佬们有没有更简单的写法,我这写的不美观,求教

第1个回答  2018-12-05
直接子串就行,不需要转换两次。追问

问题是获取到的日期是 String 格式的
然后我要的是 去年最后一天的日期 我截取之后要转发整型才能减 1 也就是去年的年份(String能直接运算??) 之后,要转换成String型的才能 拼接
因为我的这个日期格式不是 Date型 而是String 的 所以还需要转换

追答

看错,String.valueOf多余,因为 数字 + 字符串的结果就是个字符串。java自带的功能。

第2个回答  2018-12-05
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class Test {
   public static void main(String[] args) throws Exception{
      String dt="2018-12-05";
      SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);      
      Calendar c=Calendar.getInstance(Locale.CHINA);
      c.setTime(f.parse(dt));
      c.add(Calendar.YEAR, -1);//拨回去年
      c.set(Calendar.DAY_OF_YEAR,c.getActualMaximum(Calendar.DAY_OF_YEAR));//最后一天
      System.out.println("去年最后一天:"+f.format(c.getTime()));      
   }
}

去年最后一天:2017-12-31

历法用日历做。借题深化熟悉日历..

本回答被网友采纳