2022年JAVA日期时间的计算 .pdf
《2022年JAVA日期时间的计算 .pdf》由会员分享,可在线阅读,更多相关《2022年JAVA日期时间的计算 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA日期时间的计算收藏最近,手头有不少项目,其中就有一个类似公文流转的项目,其中有一个模块是任务的制定,而在任务的类型中有一个循环任务,就是用户输入任务的开始日期、结束日期,还需要输入一个周期数,比如每周的星期几、每月的多少号等,这里面就牵扯到JAVA日期时间的计算,从网上收集了一下,整理下来,供大家参考_ Java 语言的 Calendar,GregorianCalendar(日历),Date(日期),和 DateFormat(日期格式)组成了 Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分.所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数
2、据解析成日期对象。学习日期,日期格式,日期的解析和日期的计算。我们将讨论下面的类:1、具体类(和抽象类相对)java.util.Date 2、抽象类 java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat 3、抽象类 java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 具体类可以被实例化,但是抽象类却不能.你首先必须实现抽象类的一个具体子类.1.java.util.Date 及其格式化Date 类从 Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设
3、置一个日期数据的各个部分的方法,比如说月,日,和年.这些方法现在遭到了批评并且已经被转移到了 Calendar类里去了,我们将在本文中进一步讨论它.这种改进旨在更好的处理日期数据的国际化格式.就象在 JDK 1.1中一样,Date 类实际上只是一个包裹类,它包含的是一个长整型数据,表示的是从GMT(格林尼治标准时间)1970年,1 月 1 日 00:00:00 这一刻之前或者是之后经历的毫秒数.1.1.创建 java.util.DateJava 统计从 1970 年 1 月 1 日起的毫秒的数量表示日期。也就是说,例如,1970 年 1 月 2 日,是在 1 月 1 日后的 86,400,00
4、0 毫秒。同样的,1969 年 12 月 31 日是在 1970 年 1 月 1 日前 86,400,000 毫秒。Java 的 Date 类使用 long 类型纪录这些毫秒值.因为 long 是有符号整数,所以日期可以在1970 年 1 月 1 日之前,也可以在这之后。Long 类型表示的最大正值和最大负值可以轻松的表示290,000,000 年的时间,这适合大多数人的时间要求。让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子.这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间.import java.util.Date;public class D
5、ateExample1 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -public static void main(String args)/Get the system date/time Date date=new Date();/打印出具体的年,月,日,小时,分钟,秒钟以及时区System.out.println(date.getTime();在星期六,2001 年 9 月 29 日,下午大约是6:50 的样子,上面的例子在系统输出设备上显示的结果是1001803809710.在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象,这个构造函数
6、没有接受任何参数.而这个构造函数在内部使用了System.currentTimeMillis()方法来从系统获取日期./1 年前日期java.util.Date myDate=new java.util.Date();long myTime=(myDate.getTime()/1000)-60*60*24*365;myDate.setTime(myTime*1000);String mDate=formatter.format(myDate);/明天日期myDate=new java.util.Date();myTime=(myDate.getTime()/1000)+60*60*24;myD
7、ate.setTime(myTime*1000);mDate=formatter.format(myDate);/两个时间之间的天数SimpleDateFormat myFormatter=new SimpleDateFormat(yyyy-MM-dd);java.util.Date date=myFormatter.parse(2003-05-1);java.util.Date mydate=myFormatter.parse(1899-12-30);名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -long day=(date.getTime()-mydate.get
8、Time()/(24*60*60*1000);/加半小时SimpleDateFormat format=new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);java.util.Date date1=format.parse(2002-02-28 23:16:00);long Time=(date1.getTime()/1000)+60*30;date1.setTime(Time*1000);String mydate1=formatter.format(date1);/年月周求日期SimpleDateFormat formatter2=new SimpleDat
9、eFormat(yyyy-MM F E);java.util.Date date2=formatter2.parse(2003-05 5 星期五);SimpleDateFormat formatter3=new SimpleDateFormat(yyyy-MM-dd);String mydate2=formatter3.format(date2);/求是星期几mydate=myFormatter.parse(2001-1-1);SimpleDateFormat formatter4=new SimpleDateFormat(E);String mydate3=formatter4.format
10、(mydate);1.2.Date 格式化能以一种用户明白的格式来显示这个日期呢?在这里类java.text.SimpleDateFormat 和它的抽象基类java.text.DateFormat。那么,现在我们已经知道了如何获取从1970 年 1 月 1日开始经历的毫秒数了.我们如何才format 就派得上用场了./我们能不能用下面的代码构件出2001/8/8 8:8 import java.io.*;import java.util.*;public class WhatIsDate 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -public static vo
11、id main(String args)Date date=new Date(2001,8,8,8,8,8);System.out.println(date);Java 的编译器竟然报如下信息(Sun JDK1.3,Windows 2000 中文下)注意:WhatIsDate.java 使用或覆盖一个不鼓励使用的API。注意:使用-deprecation 重新编译,以得到详细信息。!那么Date 对象究竟是为了满足哪个需求呢?看来它不是用来实现基于年/月/日小时:分钟的时间表述。我们查看Java 的文档,我们看到有getTime()方法,它返回的竟然是一个long 值。文档进一步又告诉我们这个
12、值代表了当前系统的时间离1970/1/1 0:0 的毫秒差,而且是在GMT 时区下(也被称为EPOC)。如果我们指定的时间是在此之前的,那它将返回一个负数值。这个发现让我们对Date 对象有了一个全新的认识-Date 存放的是与EPOC 的偏差值。换而言之我们也可通过long 类型来表示时间?对了,这个猜想是得到了Java 的支持:/第二种获得当前时间的方法long dateInMilliSeconds=System.currentTimeMillis();/这时候打印出的只是一串数字而已System.out.println(dateInMilliSeconds);对程序执行效率敏感的程序员可
13、以发现这个方法只是生成一个Java 的原始类型(primitive type)long,不需要实例化一个对象。因此如果我们对时间的处理只是在内部进行时,可以用long 来代替Date 对象。最典型的应用就是在一段代码开始和结束时,分别获得系统当前的时间,然后计算出代码执行所需的时间(微秒级)。long start=System.currentTimeMillis();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -/代码段System.out.println(需要+(System.currentTimeMillis()-start)+微秒);那么当我们要把这个long
14、值已更为友好的表现形式显示处理的时候,我们可以用它来构造Date 对象:Date date=new Date(dateInMilliSeconds);System.out.println(date);我们看到了在Java 中对时间最为基本的表示,有通过对EPOC 的偏差值进行处理。Date 对象是对它的一个对象的封装。我们同时也看到了,在现时世界中我们对时间的描述通常是通过某年某月某日某时某分 来定义的。Date 的显示(实际上是toString()方法)描述了这些信息,但Java 并不建议我们用这种方式直接来构件Date 对象。因此我们需要找出哪个对象可以实现这个需求。这就是我们下面就要讲述
15、的Calendar 对象的功能。在我们进一步研究Calendar 之前,请记住Date 只是一个对long 值(基于GMT 时区)的对象封装。它所表现出来的年/月/日小时:分钟时区的时间表述,只是它的toString()方法所提供的。千万不要为这个假象所迷惑。假如我们希望定制日期数据的格式,比方星期六-9 月-29 日-2001 年.下面的例子展示了如何完成这个工作:import java.text.SimpleDateFormat;import java.util.Date;public class DateExample2 public static void main(String ar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年JAVA日期时间的计算 2022 JAVA 日期 时间 计算
限制150内