Java中Date类型如何向前向后滚动时间,( 附工具类)

Java中的Date类型向前向后滚动时间(附工具类)

废话不多说,先看工具类:

 1 import java.text.SimpleDateFormat;
 2 import java.util.Calendar;
 3 import java.util.Date;
 4 
 5 public class DateRoll {
 6 
 7     /**
 8      * Date类型向前向后滚动固定时长
 9      * 
10      * @param date
11      *            调整前的时间对象
12      * @param i
13      *            需要滚动哪一个字段,写法: 年->Calendar.YEAR 月->Calendar.MONTH
14      *            日->Calendar.DATE 时->Calendar.HOUR_OF_DAY(24小时制)
15      *            分->Calendar.MINUTE 秒->Calendar.SECOND 毫秒->Calendar.MILLISECOND
16      * @param d
17      *            滚动多少,向前(以前)就用负数,向后(未来)就用正数
18      */
19     public static Date dateRoll(Date date, int i, int d) {
20         // 获取Calendar对象并以传进来的时间为准
21         Calendar calendar = Calendar.getInstance();
22         calendar.setTime(date);
23         // 将现在的时间滚动固定时长,转换为Date类型赋值
24         calendar.add(i, d);
25         // 转换为Date类型再赋值
26         date = calendar.getTime();
27         return date;
28     }
29 
30     public static void main(String[] args) {
31         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
32                 .format(new Date()));
33         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
34                 .format(dateRoll(new Date(), Calendar.SECOND, 1)));
35     }
36 }

 1  java中处理时间的类有2个,一个是大家熟知的java.util.Date类,另一个是java.util.Calendar,那么他们有什么区别呢,在早期的java中并没有Calendar类,后来人们发现了Date类的诸多bug,比如在向前回滚时间的时候,如果是2018-1-2回滚5天就变成了2018-12-28,很明显这是不对的,不过因为java出现早期定下的规定,JDK开发人员并没有直接在Date类里面修改,而是加入了更加完善的Calendar类Calendar经过长时间的实际使用,的确是已经证明它的完备性,Calendar还提供了与Date之间的转换,本文中的滚动方法也是基于这种想法实现的,

posted @ 2018-06-15 10:49  CN-无忧  阅读(1577)  评论(1编辑  收藏  举报