Java中获取前一天和后一天时间

简介:

http://blog.csdn.net/jiangwei0910410003/article/details/18978441


今天在开发项目的时候遇到一个问题就是怎么获取当前时间的前一天和后一天,这个实现的逻辑并不复杂,自己要写的话的也不是难事,但是貌似感觉没必要自己写这样的方法,想想Java中的Calendar类应该有这样的方法,所以上网查了相关的资料,有两个方法:分别是set和roll方法,这两个方法的具体使用方法如下:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.java.demo;  
  2.   
  3. import java.util.Calendar;  
  4.   
  5. public class DateUtil {  
  6.       
  7.     public static void main(String[] args){  
  8.         //当前时间  
  9.         Calendar cl = setCalendar(2014,01,01);  
  10.         System.out.print("当前时间:");  
  11.         printCalendar(cl);  
  12.         //前一天  
  13.         cl = setCalendar(2014,01,01);  
  14.         getBeforeDay(cl);  
  15.         System.out.print("前一天:");  
  16.         printCalendar(cl);  
  17.         //后一天  
  18.         cl = setCalendar(2014,01,01);  
  19.         getAfterDay(cl);  
  20.         System.out.print("后一天:");  
  21.         printCalendar(cl);  
  22.     }  
  23.       
  24.     /** 
  25.      * 设置时间 
  26.      * @param year 
  27.      * @param month 
  28.      * @param date 
  29.      * @return 
  30.      */  
  31.     public static Calendar setCalendar(int year,int month,int date){  
  32.         Calendar cl = Calendar.getInstance();  
  33.         cl.set(year, month-1, date);  
  34.         return cl;  
  35.     }  
  36.       
  37.     /** 
  38.      * 获取当前时间的前一天时间 
  39.      * @param cl 
  40.      * @return 
  41.      */  
  42.     private static Calendar getBeforeDay(Calendar cl){  
  43.         //使用roll方法进行向前回滚  
  44.         //cl.roll(Calendar.DATE, -1);  
  45.         //使用set方法直接进行设置  
  46.         int day = cl.get(Calendar.DATE);  
  47.         cl.set(Calendar.DATE, day-1);  
  48.         return cl;  
  49.     }  
  50.       
  51.     /** 
  52.      * 获取当前时间的后一天时间 
  53.      * @param cl 
  54.      * @return 
  55.      */  
  56.     private static Calendar getAfterDay(Calendar cl){  
  57.         //使用roll方法进行回滚到后一天的时间  
  58.         //cl.roll(Calendar.DATE, 1);  
  59.         //使用set方法直接设置时间值  
  60.         int day = cl.get(Calendar.DATE);  
  61.         cl.set(Calendar.DATE, day+1);  
  62.         return cl;  
  63.     }  
  64.       
  65.     /** 
  66.      * 打印时间 
  67.      * @param cl 
  68.      */  
  69.     public static void printCalendar(Calendar cl){  
  70.         int year = cl.get(Calendar.YEAR);  
  71.         int month = cl.get(Calendar.MONTH)+1;  
  72.         int day = cl.get(Calendar.DATE);  
  73.         System.out.println(year+"-"+month+"-"+day);  
  74.     }  
  75.       
  76. }  
上面的代码就是说明了set方法和roll方法的使用,传入一个Calendar,进行设置之后返回一个Calendar,但是roll和set有一个区别:为了测试出这两个方法的却别,我们将时间设置成一个边界值:2014-01-01:看运行效果:

是通过set方法进行设置的时间的效果图:


通过效果图我们可以看到,set方法获取前一天和后一天的时间是没有任何问题的。下面再来看一下roll方法获取前一天和后一天的时间的效果图:


我们发现在获取前一天的时间的时候出现问题了,就是2014-01-01获取前一天是2014-01-31,由此我们可以看到,roll方法在获取前一天和后一天的时候并不是级联改动的,只会修改当前的day,而不会考虑year和month,当然他在修改day的时候是一个循环的修改,如:1月份是:1-31,就是一个循环。

通过上面的分析我们看到了set方法和roll方法的却别了。


相关文章
|
Java
java时间换算(BJU转UTC)
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
665 0
java时间换算(BJU转UTC)
|
Java
java判断当前时间是否在某个时间区间内(可精确到毫秒)
java判断当前时间是否在某个时间区间内(可精确到毫秒)
1294 0
java判断当前时间是否在某个时间区间内(可精确到毫秒)
|
算法 搜索推荐 Java
线性时间选择(Top K)问题(Java)
线性时间选择(Top K)问题(Java)
612 0
线性时间选择(Top K)问题(Java)
java获取时间间隔,获取当天每隔15分钟的时间
Java开发中日常遇到的关于时间的问题
java获取时间间隔,获取当天每隔15分钟的时间
|
Java 程序员
Java中如何处理时间--Date类
在实际业务中,总会碰到关于时间的问题,例如收集当年的第一季度的数据。第一季度也就是当年的一月一日到三月三十一日。如何处理时间的逻辑,如果用字符串去处理显然不可以,Java有专门的处理时间的类,在此记录一下。Date 类有如下两个构造方法。Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
413 0
Java中如何处理时间--Date类
|
关系型数据库 MySQL Java
Linux系统下java程序获取的时间与系统时间不一致的问题
解决Linux系统下java程序获取的时间与系统时间不一致的问题
1754 0
Linux系统下java程序获取的时间与系统时间不一致的问题
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
1295 0
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
|
Java
Java中时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例
时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例的简单示例
610 0
Java中时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例
Java 将带有 ‘T’的时间字符串转换成yyyy-MM-dd HH:mm:ss 格式
Java 将带有 ‘T’的时间字符串转换成yyyy-MM-dd HH:mm:ss 格式
1293 0
Java 将带有 ‘T’的时间字符串转换成yyyy-MM-dd HH:mm:ss 格式