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

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


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


例:
Java代码

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历。
Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历。
Calendar cal_2 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历。


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


// 取当前日期的前一天.
cal_1.add(Calendar.DAY_OF_MONTH, -1);
System.out.println("yesterday is:" + format.format(cal_1.getTime()));


// 取当前日期的后一天.
cal_2.add(Calendar.DAY_OF_MONTH, +1);
System.out.println("tomorrow is:" + format.format(cal_2.getTime()));




 
Java代码
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代码
Calendar calendar = new GregorianCalendar(2007, 11, 25,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    
2008年4月15日 下午03时24分31秒    
2008年4月15日 星期二 下午03时24分31秒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://www.mzph.cn/news/538409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idle扩展插件_Python3.4学习笔记之 idle 清屏扩展插件用法分析

本文实例讲述了Python3.4 idle 清屏扩展插件用法。分享给大家供大家参考,具体如下:python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到这样两种答案:1.在shell中输入…

内存堆和栈的区别

原文链接:http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html -------------------------------------------------------------------------------- 在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用…

MYSQL安装和配置

Win10安装MySQL5.7.22 解压缩版(手动配置 1.下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后: 2.可以把解压的内容随便放到一个目录,我的是如下目录(放到C盘的话&#xff0…

python删除过期文件_python删除过期文件的方法

本文实例讲述了python删除过期文件的方法。分享给大家供大家参考。具体实现方法如下:# remove all jpeg image files of an expired modification date mtime# you could also use creation date (ctime) or last access date (atime)# os.stat(filename) returns …

【很久之前的一篇老文章】一位程序员工作10年总结的13个忠告

展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告。 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的…

apply()与call()的区别

一直都没太明白apply()与call()的具体使用原理,今日闲来无事,决定好好研究一番。 JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,它们的语法分别为: /*apply()方法*/ function.apply(thisObj[, argArray]…

java代码执行了两次_Java中JComboBox的itemStateChanged事件执行两次的解释

今天做项目,用到了JComboBox,即下拉列表框。为了在被选中的项发生改变时获得被选中的项,所以使用的ItemStateChanged事件,可是问题就来了,每次触发该事件,它都执行两次,屡试不爽。一开始以为是代…

python连接mongo_使用简单的Python连接访问MongoDB

继续来聊MongoDB。MongoDB作为了一个数据库产品软件,除了服务器Server端进程(mongod)外,还提供了比较丰富的访问连接接口。我们最常用的就是两个类型,一个是原生mongo shell,另一个就是应用程序语言访问接口。1、从Mongo Shell到应…

spring与mybatis三种整合方法

原文链接:http://www.cnblogs.com/wangmingshun/p/5674633.html ------------------------------------------------------------------------------------------------- 1、采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成…

js常用的2中排序方法:冒泡排序和快速排序

冒泡排序:例如9 4 5 6 8 3 2 7 10 1 首先:9和4比较 4放前 4 9 5 6 8 3 2 7 10 1 4和5比较 4不动 4 9 5 6 8 3 2 7 10 1 4和6比较 4不动 4 9 5 6 8 3 2 7 10 1 4和3比较 3放前 3 9 5 6 8 4 2 7 10 1 3和2比较 2放前 2 9 5 6 8…

java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现

本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示:package regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class registered {public static void main(String[] args)…

python 编程效率_如何有效提升数据分析效率?五大Python技巧

如何有效提升数据分析效率?相信这是所有数据分析工作者都想解决的问题。本文整理了五大python技巧,分别是Pandas Profiling;使用 Cufflinks 和 Plotly 绘制 Pandas 数据;IPython 魔术命令;Jupyter 中的格式编排&#x…

please select a vaild python interpret

当 JetBrains PyCharm 2017.1.3 x64 遇到 please select a vaild python interpret 错误时: 进入PyCharm setting 选项,搜索 interpret

Grafana分析Nginx日志

配置Groub by -Terms时报错,提示需要设置fielddatatrue,报错内容大概如下: "Fielddata is disabled on text fields by default ... " 解决方法如下: https://www.elastic.co/guide/en/elasticsearch/reference/curren…

php curl json post请求_php post请求发送json对象数据参数

网页中发送请求时,大部分情况都参数以键值组合发送数据的,而一些第三方如java开发的接口中需要发送post请求,请求参数为json类型。既然要发送json数据,首页我们需要在请求头中定义数据类型为json,告诉服务器客服端发送…

python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...

删除链表元素:循环列表head,判断当前指针pre.next的val是否等于val,如果是,当前pre重指向pre.next.next,直至pre.next Null# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.va…

IDEA 更换主题

1、下载主题文件 百度或者谷歌 IDEA themes 网址有可能会变化。目前是 http://color-themes.com 选择自己喜欢的颜色,下载。 2、导入主题文件 File----Import Setting 导入下载的jar文件,一路确认,idea会自动重启。 3、选择主题 点击…

【CentOS 7笔记】cp、mv、文档查看方式

2019独角兽企业重金招聘Python工程师标准>>> 一. copy 常用cp -r/R #拷贝目录,递归 cp -i #覆盖时会提示,默认项 cp -p #保留源目录或源文件的属性 cp -b #源文目与目的文目建立链接,链接 cp -f #强制覆盖 cp -v …

php 情书,php趣味编程 - php输出笛卡尔情书的秘密

/*笛卡尔情书的秘密心形图案的实现。重点是心形函数ra(1-sin),据说这是笛卡尔死前寄出的最后一封情书内容。这里面隐藏着一个刻骨铭心的秘密;“一生只为等待能手绘这个函数给我的人”*/$width 500;$height 500;header("Content-type: image/gif");$img …

python 月报_python实践--月报分析之获取jira缺陷数据

首先安装jira,同其他第三方库,直接可以 easy_install jira。判断jira是否按转成功输入:from jira import JIRA,如果没有报错则说明安装成功;#连接jirajira JIRA(“http://jira地址”,basic_auth (“用户名…