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

package com.java.demo;

import java.util.Calendar;

public class DateUtil {

	public static void main(String[] args){
//当前时间
Calendar cl = setCalendar(2014,01,01);
System.out.print("当前时间:");
printCalendar(cl);
//前一天
cl = setCalendar(2014,01,01);
getBeforeDay(cl);
System.out.print("前一天:");
printCalendar(cl);
//后一天
cl = setCalendar(2014,01,01);
getAfterDay(cl);
System.out.print("后一天:");
printCalendar(cl);
} /**
* 设置时间
* @param year
* @param month
* @param date
* @return
*/
public static Calendar setCalendar(int year,int month,int date){
Calendar cl = Calendar.getInstance();
cl.set(year, month-1, date);
return cl;
} /**
* 获取当前时间的前一天时间
* @param cl
* @return
*/
private static Calendar getBeforeDay(Calendar cl){
//使用roll方法进行向前回滚
//cl.roll(Calendar.DATE, -1);
//使用set方法直接进行设置
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day-1);
return cl;
} /**
* 获取当前时间的后一天时间
* @param cl
* @return
*/
private static Calendar getAfterDay(Calendar cl){
//使用roll方法进行回滚到后一天的时间
//cl.roll(Calendar.DATE, 1);
//使用set方法直接设置时间值
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day+1);
return cl;
} /**
* 打印时间
* @param cl
*/
public static void printCalendar(Calendar cl){
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH)+1;
int day = cl.get(Calendar.DATE);
System.out.println(year+"-"+month+"-"+day);
} }

上面的代码就是说明了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中获取前一天和后一天时间的更多相关文章

  1. java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)

      1.情景展示  java 根据系统当前日期获取前一天日期.后一天日期,或者根据初始日期推算出期望(向前/向后)日期. 2.解决方案 导包 import java.text.ParseExcepti ...

  2. java中获取比毫秒更为精确的时间

    所以这里提醒做非常精确的时间统计的朋友,谨慎使用System.currentTimeMillis() . 在Java中可以通过System.currentTimeMillis()或者System.na ...

  3. java日期获取前一天和后一天

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...

  4. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  5. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  6. JAVA中获取当前系统时间及格式转换

    JAVA中获取当前系统时间   一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...

  7. JAVA中获取路径

    内容来自于snannan_268 关键字: java中获取路径 JAVA中获取路径: 1.jsp中取得路径:   以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.get ...

  8. JAVA中获取当前系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...

  9. java中获取路径中的空格处理(%20)问题

    在java中获取文件路径的时候,有时候会获取到空格,但是在中文编码环境下,空格会变成“%20”从而使得路径错误. 解决办法: String path = Parameter.class.getReso ...

随机推荐

  1. 分分钟教你学会 ToolBar 的使用(转)

    转自:http://blog.csdn.net/itguangit/article/details/52042203 1.和平常一样,新建一个Moudle 在xml布局文件中使用 Toolbar 控件 ...

  2. visual studio 自定义警告标签

    写代码中经常会遇见某段代码写的不大合适或者是有隐患,但是一时半会有没时间不去完善,总体上不影响程序,也就放下了 结果时间一久就给忘了 vs提供了自定义警告的功能,这样就能有个提醒啦,方便以后改进 us ...

  3. java架构的演变

    传统构架 传统构架是部署在一个tomcat上的,Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群.因此当 ...

  4. 分布式锁实现(一):Redis

    前言 单机环境下我们可以通过JAVA的Synchronized和Lock来实现进程内部的锁,但是随着分布式应用和集群环境的出现,系统资源的竞争从单进程多线程的竞争变成了多进程的竞争,这时候就需要分布式 ...

  5. git——修改已经提交并push后的commit注释

    把代码push到远程后,发现commit的注释居然多了几个错别字,不行,必须改了! 搜索了一些答案之后自己做了一个总结如下: ①修改倒数第次的commit 指令:$ git rebase -i HEA ...

  6. idea创建Maven项目后启动报404

    这块的配置是

  7. 文件系统类型(ext4、ntfs)

    Linux 1.Linux:存在几十个文件系统类型:ext2,ext3,ext4,xfs,brtfs,zfs(man 5 fs可以取得全部文件系统的介绍) 不同文件系统采用不同的方法来管理磁盘空间,各 ...

  8. Read Committed

    在Read Committed隔离级别下,一个事务可能会遇到不可重复读(Non Repeatable Read)的问题. 不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一 ...

  9. 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包

    一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...

  10. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...