Date类内部维护着一个long值,保存的是自1970-1-1至今的毫秒值。
废话不多说,先来热身下
// Date转String
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String var1 = formatter.format(date);
System.out.println(var1); // 输出:2021-04-11 19:56:45
// String转Date
String var2 = "2021-04-11 19:56:45";
Date date1 = formatter.parse(var2);
再来看下如何获取一天后的时间 实际上是加毫秒数 这个不能精确到月份,不推荐使用,而且存在千年虫问题
// 获取当前日期
Date date = new Date();
// 设置当前日期距离1970-1-1的毫秒数 一天=24小时*60分钟*60秒*1000毫秒
date.setTime(date.getTime()+1000*24*60*60);
// 设置日期格式 2021-04-12 22:49:17
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 输出日期
System.out.println(formatter.format(date));
更有效的方案是使用Calendar类来进行操作
如:获取两个月后的今天
// 获取日期对象
Calendar calendar = Calendar.getInstance();
// 设置日期为当前时间
calendar.setTime(new Date());
// 日期增加或减少对应field,数量为amout,可以为负数
calendar.add(Calendar.MONTH, 2);
// 获取操作后的时间
Date var3 = calendar.getTime();
// 设置日期格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 打印日期
System.out.println(formatter.format(var3));