文档章节

Java对日期Date类进行加减运算,年份加减,月份加减

mtfan
 mtfan
发布于 2014/12/11 20:59
字数 925
阅读 6655
收藏 14

 Date d=new Date();   
 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");   
 System.out.println("今天的日期:"+df.format(d));   
 System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000)));  
   System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));

 

 

 

JAVA处理日期时间常用方法:

1.java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

例:

Java代码

Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。    

cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.    

cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.    

//通过格式化输出日期    

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");    

System.out.println("Today is:"+format.format(Calendar.getInstance().getTime()));    

System.out.println("yesterday is:"+format.format(cal.getTime()));   

得到2007-12-25日期:

 

Java代码

Calendar calendar = new GregorianCalendar(20071125,0,0,0);    

Date date = calendar.getTime();    

System.out.println("2007 Christmas is:"+format.format(date));   


java月份是从0-11,月份设置时要减1.

GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.

取日期的部分:

Java代码

int year =calendar.get(Calendar.YEAR);    

int month=calendar.get(Calendar.MONTH)+1;

int day =calendar.get(Calendar.DAY_OF_MONTH);    

int hour =calendar.get(Calendar.HOUR_OF_DAY);    

int minute =calendar.get(Calendar.MINUTE);    

int seconds =calendar.get(Calendar.SECOND);   



取月份要加1.

判断当前月份的最大天数:

Java代码

Calendar cal = Calendar.getInstance();    

int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);    

System.out.println(day);   



2.java.util.Date

Java代码

java.util.Date today=new java.util.Date();    

System.out.println("Today is "+formats.format(today));   



取当月的第一天:

Java代码

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01");    

java.util.Date firstDay=new java.util.Date();    

System.out.println("the month first day is "+formats.format(firstDay));   


取当月的最后一天:

Java代码

    

Calendar cal = Calendar.getInstance();    

int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);    

java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay);    

System.out.println(formatter3.format(cal.getTime()));   



求两个日期之间相隔的天数:

Java代码

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date beginDate= format.parse("2007-12-24");    

java.util.Date endDate= format.parse("2007-12-25");    

long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);    

System.out.println("相隔的天数="+day);   


一年前的日期:

Java代码

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date todayDate=new java.util.Date();    

long beforeTime=(todayDate.getTime()/1000)-60*60*24*365;    

todayDate.setTime(beforeTime*1000);    

String beforeDate=formatter.format(todayDate);    

System.out.println(beforeDate);   


一年后的日期:

Java代码

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date todayDate=new java.util.Date();    

long afterTime=(todayDate.getTime()/1000)+60*60*24*365;    

todayDate.setTime(afterTime*1000);    

String afterDate=formatter.format(todayDate);    

System.out.println(afterDate);   


求10小时后的时间

Java代码

java.util.Calendar Cal=java.util.Calendar.getInstance();    

Cal.setTime(dateOper);    

Cal.add(java.util.Calendar.HOUR_OF_DAY,10);    

System.out.println("date:"+forma.format(Cal.getTime()));   


求10小时前的时间

Java代码

java.util.Calendar Cal=java.util.Calendar.getInstance();    

Cal.setTime(dateOper);    

Cal.add(java.util.Calendar.HOUR_OF_DAY,-10);    

System.out.println("date:"+forma.format(Cal.getTime()));   


3.java.sql.Date
继承自java.util.Date,是操作数据库用的日期类型

Java代码

java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime());

 


日期比较:简单的比较可以以字符串的形式直接比较,也可使用
java.sql.Date.valueOf("2007-03-08").compareTo(java.sql.Date.valueOf("2007-03-18"))方式来比较日期的大小.也可使用java.util.Date.after(java.util.Date)来比较.

相差时间:
long difference=c2.getTimeInMillis()-c1.getTimeInMillis();
相差天数:long day=difference/(3600*24*1000)
相差小时:long hour=difference/(3600*1000)
相差分钟:long minute=difference/(60*1000)
相差秒: long second=difference/1000

补充:

Java代码

DateFormat df=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");    

System.out.println(df.format(new Date()));    

Date date = new Date();    

DateFormat shortDate=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);    

DateFormat mediumDate =DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);    

DateFormat longDate =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);    

DateFormat fullDate =DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);    

  

system.out.println(shortDate.format(date));    

System.out.println(mediumDate.format(date));    

System.out.println(longDate.format(date));    

System.out.println(fullDate.format(date));    

  

08-4-15 下午3:24    

2008-4-15 15:24:31    

2008415日 下午032431秒    

2008415日 星期二 下午032431秒CST    

 

Calendar c = Calendar.getInstance(); 

c.add(Calendar.MONTH, 1); // 目前時間加1個月    

System.out.println(df.format(c.getTime()));    

c.add(Calendar.HOUR, 3); // 目前時間加3小時    

System.out.println(df.format(c.getTime()));    

c.add(Calendar.YEAR, -2); // 目前時間減2年    

System.out.println(df.format(c.getTime())); 

c.add(Calendar.DAY_OF_WEEK, 7); // 目前的時間加7天    

System.out.println(df.format(c.getTime())); 


本文转载自:http://blog.sina.com.cn/s/blog_4be6505c0100vvoz.html

共有 人打赏支持
mtfan
粉丝 0
博文 3
码字总数 1976
作品 0
西安
程序员
私信 提问
Linux date日期格式及加减运算

显示时间是个常用的命令,在写shell脚本中也经常会用到与日期相关文件名或时间显示。无论是linux还是windows下都是date命令。 Linux下date命令用法 date [OPTION]… [+FORMAT] date [-u|--u...

长平狐
2013/01/06
234
0
java和mysql之间的时间日期类型传递

mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59 timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到......

为了美好的明天
2017/10/31
0
0
Linux 的date命令用法

Linux date命令的用法 在linux shell编程中,经常用到日期的加减运算 以前都是自己通过expr函数计算,很麻烦 其实date命令本身提供了日期的加减运算 非常方便。例如:得到昨天的时间 date +...

5431039
2017/07/12
0
0
linux date命令的用法

Linux date命令的用法 在linux shell编程中,经常用到日期的加减运算 以前都是自己通过expr函数计算,很麻烦 其实date命令本身提供了日期的加减运算 非常方便。例如:得到昨天的时间 date +...

露露露露张
2017/10/11
0
0
Java8 日期时间 —— LocalDate —— 年月日

一、简介 二、获取 LocalDate 的方法 1.获取当前的日期 LocalDate 2.根据年月日的值获取 LocalDate 3.根据某年的第n天获取 LocalDate 4.从时间纪元(1970年1月1日)开始第n天(负数表示在时间...

动听的椰子
2016/12/21
67
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 哽住

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蓝瞳 :分享高橋広樹的单曲《銀河沿線'05<Vo>》:一直暗恋却无法表白的女孩在电车上疲倦不堪累得靠在他的肩上,播磨拳儿终于忍不住流下了眼泪...

小小编辑
42分钟前
79
5
shell输入内容时不显示内容

简介 大家都知道当我们ssh登录linux服务器的时候输入密码密码是不显示在屏幕上的,同样在我们写shell脚本的时候在获取用户密码的时候,有时候也希望不显示密码,这个是怎么做的呢 实例脚本 ...

bboysoulcn
今天
3
0
第11章 多线程

程序、进程、线程 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 **进程(process)**是程序的一次执行过程或是正在运行的一个程序。动...

流小文
今天
6
0
SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
今天
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部