码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-15 12:54:47      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:code   ram   import   str   date类   simple   font   orm   port   

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      *            输入null表示当前时间 调整前的时间对象
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 }

 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之间的转换,本文中的滚动方法也是基于这种想法实现的,

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

标签:code   ram   import   str   date类   simple   font   orm   port   

原文地址:https://www.cnblogs.com/zizaiwuyou/p/Date_roll.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!