java时间处理.doc_第1页
java时间处理.doc_第2页
java时间处理.doc_第3页
java时间处理.doc_第4页
java时间处理.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。例: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日期: 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,日,时,分,秒.取日期的部分: 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.判断当前月份的最大天数:Calendar cal = Calendar.getInstance();int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);System.out.println(day); java.util.Date类Date表示特定的瞬间,精确到毫秒。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。 尽管 Date 类打算反映协调世界时 (UTC),但无法做到如此准确,这取决于 Java 虚拟机的主机环境。当前几乎所有操作系统都假定 1 天 = 24 60 60 = 86400 秒。但对于 UTC,大约每一两年出现一次额外的一秒,称为“闰秒”。闰秒始终作为当天的最后一秒增加,并且始终在 12 月 31 日或 6 月 30 日增加。例如,1995 年的最后一分钟是 61 秒,因为增加了闰秒。大多数计算机时钟不是特别的准确,因此不能反映闰秒的差别。在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式: 年份 y 由整数 y - 1900 表示。 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。 日期(一月中的某天)按通常方式由整数 1 至 31 表示。 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。 分钟按通常方式由 0 至 59 的整数表示。 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。在所有情形中,针对这些目的赋予方法的参数不需要在指定的范围内;例如,可以把日期指定为 1 月 32 日,并把它解释为 2 月 1 日的相同含义。java.util.Date today=new java.util.Date();System.out.println(Today is +formats.format(today);取当月的第一天: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);取当月的最后一天: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.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.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.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.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.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,是操作数据库用的日期类型一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQLDATE值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。为了与 SQLDATE的定义一致,由java.sql.Date实例包装的毫秒值必须通过将时间、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。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)来比较.4java.util.GregorianCalendarGregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。GregorianCalendar是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。可由调用方通过调用setGregorianChange()来更改起始日期。历史上,在那些首先采用格里高利历的国家/地区中,1582 年 10 月 4 日(儒略历)之后就是 1582 年 10 月 15 日(格里高利历)。此日历正确地模拟了这些变化。在开始格里高利历之前,GregorianCalendar实现的是儒略历。格里高利历和儒略历之间的惟一区别就是闰年规则。儒略历指定每 4 年就为闰年,而格里高利历则忽略不能被 400 整除的世纪年。GregorianCalendar可实现预期的 格里高利历和儒略历。也就是说,可以通过在时间上无限地向后或向前外推当前规则来计算日期。因此,对于所有的年份,都可以使用GregorianCalendar来生成有意义并且一致的结果。但是,采用现代儒略历规则时,使用GregorianCalendar得到的日期只在历史上从公元 4 年 3 月 1 日之后是准确的。在此日期之前,闰年规则的应用没有规则性,在 45 BC 之前,甚至不存在儒略历。在格里高利历创立以前,新年是 3 月 25 日。为了避免混淆,此日历始终使用 1 月 1 日为新年。如果想要格里高利历转换之前并且处于 1 月 1 日和 3 月 24 日之间的日期,则可以进行手动调整。为WEEK_OF_YEAR字段所计算的值的范围从 1 到 53。一年的第一个星期始于getFirstDayOfWeek()的最早 7 天,至少包含该年的getMinimalDaysInFirstWeek()各天。这取决于getMinimalDaysInFirstWeek()、getFirstDayOfWeek()的值以及 1 月 1 日是星期几。一年的第一个星期和下一年的第一个星期之间的各个星期按顺序从 2 到 52 或 53(根据需要)进行编号。例如,1998 年 1 月 1 日是星期四。如果getFirstDayOfWeek()为MONDAY,并且getMinimalDaysInFirstWeek()为 4(这些值反映了 ISO 8601 和很多国家/地区标准),则 1998 年的第一个星期开始于 1997 年 12 月 29 日,结束于 1998 年 1 月 4 日。但是,如果getFirstDayOfWeek()为SUNDAY,那么 1998 年的第一个星期开始于 1998 年 1 月 4 日,结束于 1998 年 1 月 10 日;1998 年头三天是 1997 年第 53 个星期的一部分。为WEEK_OF_MONTH字段所计算的值的范围从 0 到 6。一个月的第一个星期(WEEK_OF_MONTH = 1的日期)是该月至少连续getMinimalDaysInFirstWeek()天中的最早日期,结束于getFirstDayOfWeek()的前一天。与一年的第一个星期不同,一个月的第一个星期可能短于 7 天,也不必从getFirstDayOfWeek()这一天开始,并且不包括前一个月的日期。在第一个星期之前该月日期的WEEK_OF_MONTH为 0。5. java.text.DateFormatDateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 - 文本)、分析(文本- 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数。DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。DateFormat 可帮助进行格式化并分析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:myString = DateFormat.getDateInstance().format(myDate)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论