zoukankan      html  css  js  c++  java
  • 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之间的转换,本文中的滚动方法也是基于这种想法实现的,

  • 相关阅读:
    省选模板_简单数学
    省选模板大杂烩
    省选_简单算法
    省选_简单图论
    省选_简单数据结构
    BZOJ4545: DQS的trie 广义后缀自动机 + LCT
    BZOJ 4229: 选择 LCT + 独创方法 + 边双
    luoguP2742 【模板】二维凸包 / [USACO5.1]圈奶牛 二维凸包
    python面向过程编程小程序 -ATM(里面用了终端打印)
    从7点到9点写的小程序(用了模块导入,python终端颜色显示,用了点局部和全局可变和不可变作用域,模块全是自定义)
  • 原文地址:https://www.cnblogs.com/zizaiwuyou/p/Date_roll.html
Copyright © 2011-2022 走看看