Java日期时间使用总结_第1页
Java日期时间使用总结_第2页
Java日期时间使用总结_第3页
Java日期时间使用总结_第4页
Java日期时间使用总结_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、java日期时间使用总结一、java中的日期概述fi期在java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国 际化,丨1期和时间之间的转换,ii期的加减运算,ii期的展示格式都是非常复杂的问题。在java中,操作日期主要涉及到一下几个类:1> java, uti 1. date类date表示特定的瞬间,精确到毫秒。从jdk 1. 1开始,应该使用calendar类 实现口期和时间字段z间转换,使用dateformat类來格式化和分析口期字符串。date中 的把h期解释为年、月、日、小时、分钟和秒值的方法已废弃。2、java. text. dateformat (抽

2、象类)dateformat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分 析|_1期或时间。口期/时间格式化子类(如simpledateeormat)允许进行格式化(也就是口 期-文本)、分析(文本-日期)和标准化。将日期表示为date对象,或者表示为从gmt (格林尼治标准时间)1970年,1月1 | 00:00:00这一刻开始的毫秒数。3 java. text. simpledateformat (dateformat 的直接子类)simpledateeormat是一个以与语言环境相关的方式来格式化和分析fi期的具体类。 它允许进行格式化(口期-> 文本)、分析(文本

3、-> 口期)和规范化。simpledateformat使得可以选择任何用八定义的fl期-时间格式的模式。但是,仍 然建议通过 dateformat 中的 gettimeinstance> getdatelnstance 或 getdatetimelnstance来新的创建日期-时间格式化程序。4、java, util. calendar (抽象类)calendar类是一个抽象类,它为特定瞬间与一组诸如year>month>day_of_month> hour等口历字段之间的转换提供了一些方法,并为操作口历字段(例如获得下星期的口期) 提供了一些方法。瞬间可用毫秒值

4、來表示,它是距历元(即格林威治标准时间1970年1月 1日的00:00:00. 000,格里高利历)的偏移量。少其他语言环境敏感类一样,calendar提供了一个类方法getlnstance,以获得 此类型的一个通用的对象。calendar的getlnstance方法返回一个calendar对象,其日 历字段已由当前口期和时间初始化。5 java. util. gregoriancalendar (calendar 的直接了类)gregorianca 1 endar是calendar的一个具体子类,提供了世界上大多数国家使用 的标准口历系统。gregoriancalendar是一种混合fl历,

5、在单一间断性的支持卜同时支持儒略历和格 里高利历系统,在默认情况下,它对应格里高利口历创立时的格里高利历口期(某些国家是 在1582年10月15 fi创立,在其他国家要晚-些)。可山调用方通过调用 setgregorianchange()来更改起始日期。二、java, util. date 的使用1> java. util. date 的 api 简介类jaautil.dat。表示特定的瞬间,精确到毫秒。提供了很多的方法,但是很多已经过 时,不推荐使用,下面仅仅列出没有过时的方法:构造方法摘要date ()分配date对彖并用当前时间初始化此对彖,以表示分配它的时间(精确到毫秒)。dat

6、e(long date)分配date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 gmt)以来的指定毫秒数。方法摘要boolean after(date when)测试此tl期是否在指定日期z后。boolean before(date when)测试此u期是否在指定日期z前。object clone0返回此对象的副木。int compareto(date anotherdate)比较两个fl期的顺序。boo 1ean equals(object obj)比较两个fl期的和等性。long gettime()返回自1970年1月1日0

7、0:00:00 gmt以来此date对象表示的毫秒数。int hashcode()返回此对彖的哈希码值。void set time (1 or)£ time)设置此date对象,以表示1970年1月1 fl 00:00:00 gmt以后time毫秒的时间点。string tostring()把此date对彖转换为以下形式的string: dow mon dd hh:mm:ss zzz yyyy其中:dow 是一周中的某一天(sun, mon, tue, wed, thu, fri, sat) 0mon 是月份(jan, feb, mar, apr, may, jun, jul, au

8、g, sep, oct, nov, dec)。dd是一月中的某一天(01至31),显示为两位十进制数。hh是一天中的小时(00显示为两位十进制数。mm是小时中的分钟(00就示为两位i 进制数。ss是分钟中的秒数(00显示为两位i进制数。zzz是时区(并可以反映夏令时)。标准时区缩写包括方法parse识别的吋区zzz缩写。如果不提供时区信息,则zzz为空,即根本不包括任何字符。yyyy是年份,显示为4位十进制数。下面是一个date类的综合实例:import java.util.date;/六* created by intellij idea.* user: leizhimin* date: 2

9、007-* time: 8:45:44* ri期测试*/public class testdate public static void main (string args) testdate nowdate = new testdate(); nowdate.getsystemcurrenttime();nowdate.getcurre ntdate();*获取系统当前时间* system.currenttimemillis()返回系统当前时间,结果为1970年1丿j 1 h 0时0分0 秒开始,到程序执行取得系统时间为止所经过的毫秒数* 1秒=1000毫秒*/public void get

10、systemcurrenttime() system.out.println(h获取系统当前时间”);system.out.println(u 系统当前时间=” + system.currenttimemillis();/ *通过date类获取当前口期和当前时间* date.tostring()把日期转换为 dow mon dd hh:mm:ss zzz yyyy*/public void getcurrentdate() system.out.println(u获取系统当前日期”);创建并初始化一个口期(初始值为当前门期)date date = new date();system.out.p

11、rintln(m 现在的日期是=” + date.tostring();system.out.printin(”白1970年1月1 11 0时0分0秒开始至今所经历的毫秒数=” 4- date.gettime();运行结果:一一获取系统当前时间-系统当前时间=1196413077278获取系统半前n期现在的日期是=fri nov 30 16:57:57 cst 2007自1970年1月1 口 0时0分0秒开始至今所经历的毫秒数=1196413077278process finished with exit code 02、java. text. dateformat 抽象类的使用datefon

12、nat是日期/吋间格式化子类的抽象类,它以与语言无关的方式格式化并分析fi期或吋间。日期/时间格式化子类(如simpledateformat)允许进行格式化(也就是日期-> 文本)、分析(文本-日期)和标准化。将h期表示为date对象,或者表示为从gmt (格 林尼治标准时间)1970年,1刀1 口 00:00:00这一刻开始的毫秒数。dateformat提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认 日期/时间formatter。格式化风格包括full、long、medium和shorto方法描述中提供 了使用这些风格的更多细节和示例。dateformat可帮助进

13、行格式化并分析任何语言环境的li期。对于刀、星期,甚至li历格式(阴历和阳历),其代码可完全与语言环境的约定无关。要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:mystring = dateformat. getdatelnstance(). format(mydate);如果格式化多个日期,那么获得该格式并多次使用它是更为高效的做法,这样系统就不必多 次获取有关环境语言和国家约定的信息了。dateformat df = dateformat. getdatetnstance();for (int i = 0; i < mydate. length; +i) output,

14、printin(df. format(mydatei) + ”; ”);要格式化不同语言环境的日期,可在getdatelnstanceo的调用中指定它。dateformat df = dateformat. getdatelnstanee(doteformeit. long, locale. france);还可使用dateformat进行分析。mydate = df. parse(mystring);使用getdatelnstance來获得该国家的标准fl期格式。另外还提供了-些其他静态工厂方 法。使用gettimelnstance可获得该国家的时间格式。使用gctdatetimolnsta

15、nce可获得 l1期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从short至i medium到long再到full)。确切的结果取决于语言环境,但是通常:short完全为数字,如12. 13. 52或3:30pmmedium 较长,如 jan 12, 1952long 更长,如 january 12, 1952 或 3:30:32pmfull 是完全指定,如 tuesday, april 12, 1952 ad 或 3:30:42pm pst。如果愿意,还可以在格式上设置时区。如果想对榕式化或分析施加更多的控制(或者给予 用户更多的控制),可以尝试将从工厂方法所获得的dat

16、eformat强制转换为 simpledateformato这适用于人多数国家;只是要记住将其放入一个try代码块屮,以防 遇到特殊的格式。述nj以使用借助parseposition和fieldposition的分析和格式化方法形式来:逐步地分 析字符串的各部分。对齐任意特定的字段,或者找出字符串在屏幕上的选择位置。dateformat不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一 个格式,则它必须保持外部同步。3、java. text. simpledateformat (dateformat 的直接子类)的使用simpledateformat是一个以与语言坏境相关的方

17、式來格式化和分析fl期的具体类。它允许 进行格式化(日期-> 文木)、分析(文本-> 日期)和规范化。simpledateformat使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通 过 dateformat 屮的 gettimelnstances getdatelnstance 或 getdatetime in stance 來新 的创建口期-时间格式化程序。每一个这样的类方法都能够返回一个以默认格式模式初始化 的口期/时间格式化程序。可以根据需要使用applypattern方法來修改格式模式。有关使 用这些方法的更多信息,请参阅dateformat o日期和时间

18、模式日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,耒加引号的 字母a'到z'和a'到z'被解释为模式字母,用來表示fl期或时间字符串元素。文木可以使用单引号(')引起来,以免进行解释。'表示单引号。所有其他字符均不解釋; 只是在格式化吋将它们简单复制到输出字符串,或者在分析吋打输入字符帝进行匹配。字母日期或时间元素表示示例gera标志符tex tady年year1996; 96m年中的月份monthjuly; jul; 07w年中的周数number27w刀份中的周数number2d年中的天数number189d月份中的天数n

19、umber10f月份中的星期number2e星期中的天数tex ttuesday; tueaam/pm标记tex tpmh天中的小吋数(0-23 number0k一天中的小时数(l24)number24kam/pm中的小时数(0-11)number0ham/pm中的小时数(1-12)number12m小时中的分钟数number30s分钟中的秒数number55s毫秒数number978z时区general timepacific standard time; pst;zonegmt-08:00定义了以卜模式字母(所有其他字符r 到v和到 都被保留):z时区rfc 822 timezone-08

20、00更多的参考信息可以杳看jdk api文档,下面给出一个综介实例:import java.util.date;import java.util.locale;import java.text.dateformat;import java.text.parseexception;import java.text.simpledateformat;* created by intellij idea.* user: leizhimin* date: 2007-11 30* time: 11:20:58* to change this template use file | settings |

21、file templates.*/public class testsimpledateformat public static void main(string args) throws parseexception testsimpledateformat test = new testsimpledateformat();test.testdateformat();public void testdateformat() throws parseexception 创建日期date date = new date();创建不同的门期格式dateformat df1 = dateforma

22、t.getlnstance();dateformat df2 = new simpledateformatcyyyy-mm-dd hh:mm:ss een);dateformat df3 = dateformat.getdatelnstance(dateformat.full,locale.china);产生一个指定国家指定氏度的口期格式,长度不同,显示的口期完整性 也不同dateformat df4 = new simpledateformat(hyyyy 年 mm 月 dd 11 hh 时 mm 分ss 秒 ee*, locale.china);dateformat df5 = new s

23、impledateformat(hyyyy-mm-dd hh:mm:ss eeeeee”, locale.us);dateformat df6 = new simpledateformat(”yyyy-mm-dcr);dateformat df7 = new simpledateformat(hyyyy 年 mm 丿 j dd h");将n期按照不同格式进行输出system.out.println(h将口期按照不同格式进行输出”);system.out.println(“按照java默认的日期格式,默认的区域:” +df1 .format(date);system.out.print

24、ln(n按照指定格式 yyyy-mm-dd hh:mm:ss ee ,系统默认区域 :” + df2.format(date);system.out.println(*®照口期的full模式,区域设置为屮文:” +df3.format(date);system.out.println(n按照指定格式 yyyy 年 mm 月 dd i i hh 时 mm 分 ss 秒 ee , 区域为中文:” + df4.format(date);system.out.printing按照指定格式 yyyy-mm-dd hh:mm:ss ee,区域为美国 :” + df5.format(date);s

25、ystem.out.printing按照指定格式yyyy-mm-dd,系统默认区域:” +df6.format(date);将符合该格式的字符串转换为口期,若格式不相配,则会出错date datel = df1 .parse(n07-11-30 下午 2:32”);date date2 = df2.parsec*2007-11-30 02:51:07 星期五”);date date3 = df3.parse(u2007 11 刀 30 n 星期7t);date date4 = df4.parse(h2007 年 11 月 30 口 02 时 51 分 18 秒 星期五”);date date5

26、 = df5.parse("2007-11-30 02:51:18 friday”);date date6 = df6.parse(“20071130”);system.out.println(h输出将字符串转换为日期的结果");system.out.printl n( datel);system.out.printl n( date2);system.out.println(date3);system.out.printl n( date4);system.out.printl n( date5);system.out.printl n( date6);运行结果:将日期按

27、照不同格式进行输出按照java默认的日期格式,默认的区域:071130下午5:04按照指定格式 yyyy-mm-dd hh:mm:ss ee,系统默认区域 :2007-11-30 05:04:10 星期五按照日期的full模式,区域设置为中文:2007年11月30日星期五按照指定格式yyyy年mm刀dd h hh时mm分ss秒ee ,区域为中文:2007年11刀 30 n 05时04分10秒星期五按照指立格式 yyyy-mm-dd hh:mm:ss ee ,区域为美国:2007-11-30 05:04:10friday按照指定格式yyyy-mm-dd ,系统默认区域:2007-11-30输出将

28、字符串转换为日期的结果frinov3014:32:00cst2007frinov3002:51:07cst2007frinov3000:00:00cst2007frinov3002:51:18cst2007frinov3002:51:18cst2007fri nov 30 00:00:00 cst 2007process finished with exit code 04 java. util. calendar (抽象类)java. util. calendar是个抽象类,是系统时间的抽象表示,它为特定瞬间与一纽诸如year month、day_of_month. hour等li历字段z间

29、的转换提供了一些方法,并为操作口历字段(例如获得下星期的fi期)提供了-些方法。瞬间可用亳秒值來表示,它是距历元(即格林 威治标准时间1970年1月1 li的00:00:00.000,格里高利历)的偏移量。与其他语言环境敏感类一样,calendar提供了一个类方法getlnstance,以获得此类型的 一个通用的对象。calendar的getlnstance方法返回一个calendar对彖,其日历字段已 由当前h期和时间初始化。一个calendar的实例是系统时间的抽彖表示,从calendar的实例对以知道年刀li星期刀份 时区等信息。calendar类中有一个静态方法get (int x),

30、通过这个方法可以获取到相关实例 的一些值(年月日星期月份等)信息。参数x是一个产量值,在calendar中有定义。calendar 些陷阱,很容易掉下去:1、calendar的星期是从周日开始的,常量值为0。2、calendar的月份是从一月开始的,常量值为0。3、calendar的每个月的第一天值为1。5、java. util. gregoriancalendar (calendar 的直接子类)gregoriancalendar是calendar的一个具休子类,捉供了世界上大多数国家使川的标准fl 历系统。结合calendar抽象类使用。下面给出一个综合实例看看calendar类的用法:i

31、mport java.util.*;import java.text.simpledateformat;* created by intellij idea.* user: leizhimin* date: 2007-11-30* time: 15:06:57* calendar的使用测试*/public class testcalendar public static void main(string args) testcalendar testcalendar = new testcalendar(); testcalendar.testcalendar();public void te

32、stcalendar() 创建calendar的方式calendar now1 = calendar.getlnstance();calendar now2 = new gregoriancalendar();calendar now3 = new gregoriancalendar(2007, 10, 30);calendar now4 = new gregoriancalendar(2007, 10, 30, 15, 55); 陷01:calendar 的月份是 011calendar now5 = new gregoriancalendar(2007, 105 30, 15, 55, 4

33、4);calendar now6 = new gregoriancalendar(locale.us);calendar now7=new gregoriancalendar(timezone.gettimezone(,lgmt-8:00t,);通过口期和毫秒数设置calendarnow2.settime(new date();system.out.printl n( now2);now2.settimelnmillis(new date().gettime();system.out.println(now2);定义口期的中文输出格式,并输出口期simpledateformat df = ne

34、w simpledateformat(,fyyyy 年 mm 月 dd 11 hh 时 mm 分 ss 秒 em, locale.china);system.out.printing获取口期中文格式化化输出:” +df.format(now5.gettime();system.out.println();system.out.printlnc'通过calendar获取i期中年月11等相关信息);system.out.println("获取年:” + now5.get(calendar.year);system.out.printin(”获取月(月份是从0开始的):” + no

35、w5.get(calendar.month);system.out.printin("获取i: ” + now5.get(calendar.day_of_month);system.out.println("获lrfl寸:” + now5.get(calendar.hour);system.out.printing获取刁: ” + now5.get(calendar.minute);system.out.println(h 获取秒:” + now5.get(calendar.second);system.out.println("获取上午、下午:” + now5.

36、get(calendar.am_pm);system.out.printin(”获取星期数值(星期是从周口开始的):” +now5.get(calendar.day_of_week);system.out.pri ntln();system.out.println(m通丿u星期中文化转换");string dayofweek =”日”,”一”,二”,“三”,”四”,*五”,”六”;system.out.println(mnow5 对彖的星期是:” +dayofweeknow5.get(calendar.day_of_week);system.out.pri ntln();system

37、.out.println(m通川月份中文化转换”);string months = '一月”二月”,"三月”,“四月蔦”五月”六月”,“七刀”,八月”,”九月”十月”十一月”,”十二月号;system.out.println(,now5 对象的刀份是:” +monthsnow5.get(calendar. month);运行结果:java.util.gregoriancalendartime=1196414388324,arefieldsset=true,areaiifields set=true,lenie nt=true,zone=s un .util.calendar.z on elnfoid=,asia/sha nghai",offset =28800000,ds

温馨提示

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

评论

0/150

提交评论