时间处理
- 时间转换
- 时间加减
时间转换
废话不多说,首先是一个时间转换处理,一个是时间转为指定格式字符串。一个是字符串转为时间处理
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Appp {
public static void main(String[] args) throws ParseException {
//创建一个当前时间
Date nowDate = new Date();
//时间处理类-此处处理为XXXX-XX-XX XX:XX:XX类型,自行设置类型
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//将时间转换为对应年月日时分秒字符格式
String nowTime = simpleDateFormat.format(nowDate);
//转为年月日
String nowTime1 = sf.format(nowDate);
System.out.println("======年月日时分秒=====>"+nowTime);
System.out.println("======年月日=====>"+nowTime1);
//将时间字符串转为对应时间
Date stringToDate = simpleDateFormat.parse(nowTime);
System.out.println("========时间字符转换后时间========"+stringToDate);
}
}
由上面代码块中可以看出主要使用一个SimpleDateFormat 类进行对应处理。不过在时间字符转为时间是得注意,在创建对应的SimpleDateFormat 时放入的构造参数结构类型得和传入字符时间格式一致。实例的是SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);那么调用SimpleDateFormat的parse方法时放入的时间字符格式就得一致为 2023-01-03 12:03:00这样格式,不然就会报错如下图。下图是我传的是2023-01-18 ,很显然是不符合实例SimpleDateFormat时的传入格式。所以我们得单独创个名为df的SimpleDateFormat实例来处理。
Date中getTime()方法为转为时间戳,时间戳为1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数
时间加减
时间加减就是处理时间对应年或月或日或时或分或秒的加减处理,此处我们使用的是Calendar类,他可以帮我们处理好比如2月1日,我时间减少一天后直接变为1月31日,而不时2月0这样。
首先创建一个Calendar,此处实例的为GregorianCalendar,它是继承了Calendar。与其他的实现类差别此处就不赘述,感兴趣的老铁可以自行点进类中看源码解析,说明也很清楚。然后就是调用setTime(此处放入要操作的时间),比如我这是new 了一个当前时间,就是对当前时间的一个操作,也可放入对应像操作的时间。至于时间格式转换就参照上文处理。
给要加工的时间放入后就该进行操作了,我们使用的add()方法进行操作
如上图,add方法中有两个参数,第一个是代表要操作的位置。
field参数
field参数 | 表示值 |
1 | 表示年 |
2 | 表示月 |
3 | 表示周–年周 |
4 | 表示周–月周 |
5 | 表示天数–月天 |
6 | 表示天数–年天 |
7 | 表示天数–周天 |
其余的感兴趣大家可以去看Calendar中源码表示,此处就列常见的
那么如果表示月份天数+1天怎么表示呢,如下field参数5表示月天,amount参数1则表示加一天,如果为-1则表示减一天。
calendar.add(5,1);
如果我还想在对于年操作进行减一年处理呢,如下图
calendar.add(1,-1);
好现在我们对时间操作完成了,要转为我们的Date形式了,那如何下处理即可
OK以上便是对于一个时间操作的简单处理过程,应该能应付大部分需求
有什么其他问题欢迎留言讨论