java中各种时间格式的转化.doc

上传人:scccc 文档编号:12396292 上传时间:2021-12-03 格式:DOC 页数:14 大小:83KB
返回 下载 相关 举报
java中各种时间格式的转化.doc_第1页
第1页 / 共14页
java中各种时间格式的转化.doc_第2页
第2页 / 共14页
java中各种时间格式的转化.doc_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java中各种时间格式的转化.doc》由会员分享,可在线阅读,更多相关《java中各种时间格式的转化.doc(14页珍藏版)》请在三一文库上搜索。

1、java中各种时间格式的转化时间和日期中常用到的几个类:java.util.Date,java.util.Cale ndar,java.util.Gregora in Cale ndar,java.text.DateFormat,java.text.SimpleDateFormatjava.util.Date :表示特定瞬间,精确到毫秒一天是 24 * 60 * 60 = 86400 秒世界时(UT或UTC),格林威治时间(GMT),格林威治时(GMT)和世界时(UT)是相等的,格林威治时(GMT)是标准的"民间"称呼,世界时(UT)是相同标准的科学称呼。UTC和UT的区别

2、是:UTC是基于原子时钟的,UT是基于天体观察的。(中文版的jdk真是好啊,跟科普教材是的,呵呵)常用的构造方法:Date();Date(lo ng date)(long date)表示从标准基准时间(称为"历元” epoch ,即1970.1.100:00:00 GMT )经历的毫秒数。还有一些构造方法已经deprecated 了主要的方法:(介绍几个常用的,详细的查询jdk文档)boolean after(Date whe n)测试日期在此日期之后。boolean before(Date whe n)测试日期在此日期之前。Object clo ne()返回此对象的副本long g

3、etTime() 返回自1970.1.1 00:00:00 GMT 后,此对象表示的毫秒数 void setTime(long time) 设置此 Date 对象,以表示 1970 年1月1日 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) 。dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat) 。mon 是月份

4、(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,Oct, Nov, Dec)。dd是一月中的某一天(01至31),显示为两位十进制数。hh是一天中的小时(00至23),显示为两位十进制数。mm是小时中的分钟(00至59),显示为两位十进制数。ss是分钟中的秒数(00至61 ),显示为两位十进制数。60,61是因为有”润秒”zzz是时区(并可以反映夏令时)。标准时区缩写包括方法parse识别的时区缩写。如果不提供时区信息,则 zzz为空,即根本不包括任何字符。yyyy是年份,显示为 4位十进制数。使用System.currentTimeMillis()获

5、得当前系统时间的毫秒数java.util.Cale ndar :Calendar类是一个抽象类.Cale ndar rightNow = Cale ndar.getl nsta nce();可以使用三种方法更改日历字段:set()、add()和roll()。set(f, value) 将日历字段f更改为 value。此外,它设置了一个内部成员变量,以指示日历字段f已经被更改。尽管日历字段f是立即更改的,但是直到下次调用get()、getTime()、getTimelnMillis()、add()或roll()时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调 用set()不会触发多次不必

6、要的计算。add(f, delta) 将delta添加到f字段中。这等同于调用 set(f, get(f) + delta)roll(f, delta)将delta添加到f字段中,但不更改更大的字段。java.util.Gregoria nCale ndar:GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家使用的标准日历系统。java.text.DateFormat:DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并 分析日期或时间。java.text.SimpleDateFormat:SimpleDateFormat是一

7、个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是, 仍然建议通过 DateFormat 中的 getTimeInstanee 、getDateInstanee或getDateTimeInstanee来新的创建日期-时间格式化程序。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式化程序。可以根据需要使用applyPattern 方法来修改格式模式。日期和时间格式由日期和时间模式字符串指定。在日期和时间模式

8、字符串中,未加引号的字母'A'到'Z'和'a'到z'被解释为模式字母,用来表示日期或时间字符串元素。引用字母日期或时间元素表示示例G Era 标志符 Text ADy 年 Year 1996; 96M 年中的月份 Mo nth July; Jul; 07w年中的周数 Number 27W 月份中的周数 Number 2D 年中的天数 Number 189 d月份中的天数 Number 10F月份中的星期 Number 2E星期中的天数 Text Tuesday; Tuea Am/pm 标记 Text PMH 一天中的小时数(0-23 )

9、Number 0k 一天中的小时数(1-24 ) Number 24K am/pm 中的小时数(0-11 ) Number 0h am/pm 中的小时数(1-12 ) Number 12m小时中的分钟数 Number 30s分钟中的秒数 Number 55S 毫秒数 Number 978z 时区 General time zone Pacific Standard Time; PST; GMT-08:00Z 时区 RFC 822 time zone -0800引用日期和时间模式结果"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.

10、04 AD at 12:08:56 PDT"EEE, MMM d, ”yy" Wed, Jul 4, '01"h:mm a" 12:08 PM"hh O'clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time"K:mm a, z" 0:08 PM, PDT"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH

11、:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010704120856-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700获得当前系统的毫秒数:代码package org.lokvin. example.cale ndar;public class Cale ndarExamplel public static void main( Stri ng args) java.util.Date

12、 date = new java.util.Date();获得当前系统的毫秒数,自1970.1.1 00:00:00 GMTlong time = System.currentTimeMillis();java.util.Date date1 = new java.util.Date(time);System.out.pri ntln ("date = " + date.toStri ng();System.out.pri ntln ("millisec ond = " + time);System.out.pri ntln( "date1 =

13、 " + date1.toStri ng();运行结果:引用date = Mon Dec 04 16:01:16 CST 2006milliseco nd = 1165219276771date1 = Mon Dec 04 16:01:16 CST 2006代码package org.lokvin. example.cale ndar;import java.util.Cale ndar;import java.util.Gregoria nCale ndar;public static void main( Stri ng args) /获得当前日期Cale ndar cale n

14、dar = Cale ndar.get In sta nce();int era = cale ndar.get(Cale ndar.ERA);/ 0 = BC, 1 = ADSystem.out.pri ntln ("ERA = " + era);int year = cale ndar.get(Cale ndar.YEAR); 2006System.out.pri ntl n( "YEAR = " + year);int month = cale ndar.get(Cale ndar.MONTH);/获得当前月份,0.11表示JAN.DECSyste

15、m.out.pri ntln( "Mo nth = " + mon th);/0 = JAN . 11 = DECint day = cale ndar.get(Cale ndar.DAY_OF_MONTH);System.out.println("Day of Month = " + day); / 1/获得日期在本周的天数,Su n=1, Mon=2 . Sta=7int day_of_week = cale ndar.get(Cale ndar.DAY_OF_WEEK);System.out.pri ntl n("Day of Week

16、= " + day_of_week);获得当前时间 12时制是Calendar.HOURint hour12 = cale ndar.get(Cale ndar.HOUR);/获得 AM , PM , 0 = AM, 1 = PMint ampm = cale ndar.get(Cale ndar.AM_PM);System.out.pri ntln ("hour 12 = " + hour12);System.out.println("am pm = " + ampm); /0 = am , 1 = pm 获得当前时间 24时制 Calend

17、ar.HOUR_OF_DAY int hour24 = cale ndar.get(Cale ndar.HOUR_OF_DAY);System.out.pri ntln( "hour 24 = " + hour24);Cale ndar today = new Gregoria nCale ndar(2006, Cale ndar.DECEMBER, 4); /Cale ndar.getl nsta nce()得到当前具体到毫秒的一个时间点System.out.pri ntln ("cale ndar = " + cale ndar.getTime().

18、toStri ng();/通过 new GregorianCalendar(2006, Calendar.DECEMBER, 4)/生成的calendar除了指定的年,月,日其余为0 (时分秒=0)System.out.pri ntl n("today = " + today.getTime().toStri ng();运行结果:引用ERA = 1YEAR = 2006Mon th = 11Day of Mon th = 4Day of Week = 2hour 12 = 4am pm = 1hour 24 = 16cale ndar = Mon Dec 04 16:22:

19、42 CST 2006today = Mon Dec 04 00:00:00 CST 2006两个日期之间的比较:代码package org.lokvin. example.cale ndar;import java.util.Cale ndar;import java.util.Gregoria nCale ndar;/*比较两个calendar对象之间的先后*/public static void main( Stri ng args) /日期比较Cale ndar xmas = new Gregoria nCale ndar(2006, Cale ndar.DECEMBER, 25);C

20、ale ndar n ewYear = new Gregoria nCale ndar(2007, Cale ndar.JANUARY, 1);/比较两个日期先后boolea n flag = xmas.before (n ewYear);System.out.pri ntl n("flag = " + flag);flag = xmas.after( newYear);System.out.pri ntl n("flag = " + flag);/两个日期相差的毫秒数long timeDiffMillis = newYear.getTimelnMill

21、is() - xmas.getTimeInMillis();System.out.println("time diff millis = " + timeDiffMillis);/两个日期相差的秒数long diffSecs = timeDiffMillis / 1000;System.out.pri ntln ("time diff secs = " + diffSecs);/两个日期相差的分钟long diffMins = timeDiffMillis / (1000 * 60);System.out.println("time diff

22、mins = " + diffMins);/两个日期相差的小时long diffHours = timeDiffMillis / (1000 * 60 * 60);System.out.pri ntln ("time diff hours = " + diffHours);/两个日期相差的天long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24);System.out.println("time diff days = " + diffDays);运行结果:引用flag = trueflag

23、= falsetime diff millis =:604800000time diff secs =604800time diff mi ns =:10080time diff hours=168time diff days =:7使用Calendar计算年龄:代码package org.lokvin. example.cale ndar;import java.util.Cale ndar;import java.util.Gregoria nCale ndar;/*计算年龄*/public class Cale ndarExample4 public static void main(S

24、tring args) II创建生日的Calendar对象Cale ndar birthDate = new Gregoria nCale ndar(1979, Cale ndar.JULY, 7);Cale ndar today = Cale ndar.get In sta nce();int age = today.get(Cale ndar.YEAR) - birthDate.get(Cale ndar.YEAR);II如果还没有过生日,则age - 1birthDate.add(Cale ndar.YEAR, age); if(today.before(birthDate) age-;

25、System.out.pri ntl n("age = " + age);判断是否为闰年:代码package org.lokvin. example.cale ndar;import java.util.Gregoria nCale ndar;/*判断是否为闰年leap year*/public class Cale ndarExample5 public static void main(String args) /判断是否”闰年"leap yearGregoria nCale ndar cal = new Gregoria nCale ndar(); bool

26、ea n isLeapYear = cal.isLeapYear(1998);System.out.pri ntl n("is leap year 1998 = " + isLeapYear); isLeapYear = cal.isLeapYear(2000);System.out.pri ntl n("is leap year 2000 = " + isLeapYear); 运行结果 引用is leap year 1998 = falseis leap year 2000 = true获得其他时区的时间:代码package org.lokvin. e

27、xample.cale ndar;import java.util.Cale ndar;import java.util.Gregoria nCale ndar;import java.util.TimeZ one;/*获得其他时区当前时间*/public class Cale ndarExample6 public static void main(String args) Cale ndar cal = new Gregoria nCale ndar();int hour12 = cal.get(Calendar.HOUR);int hour24 = cal.get(Cale ndar.H

28、OUR_OF_DAY);System.out.println("hour12 in our timezone = " + hour12);System.out.println("hour24 in our timezone = " + hour24);获得其他时区的当前时间,根据zoneId获得时区Cale ndar calJap = new Gregoria nCale ndar(TimeZ on e.getTimeZ on e("Japa n");hour12 = calJap.get(Cale ndar.HOUR);System

29、.out.println("hour12 in japs timezone = " + hour12);hour24 = calJap.get(Cale ndar.HOUR_OF_DAY);System.out.println("hour24 in japs timezone = " + hour24);/获得zoneId的列表Strin g zon eIds = TimeZ on e.getAvailablelDs();for(i nt i=0; i<z on eIdsen gth; i+) String zon eId = zon eldsi;

30、System.out.println("zone id = " + zoneId);运行结果:引用hour12 in our timez one =5hour24 in our timez one =17hour12 in japs timez one =6hour24 in japs timez one =18zone id =Etc/GMT+12zone id =Etc/GMT+11zone id =MITzone id =Pacific/Apiazone id =Pacific/Midway格式化日期代码package org.lokvin. example.cale

31、 ndar; import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class DateForamExample public static void main( Stri ng args) Date rightNow = new Date();DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");DateFormat format2 = new SimpleDateFor

32、mat("yyyy-MM-dd");DateFormat format3 = new SimpleDateFormat("h:mm a");DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, "yyyy");DateFormat format6 = new SimpleDateFor

33、mat("yyyy.MM.dd kk:mm O'clock' a, zzzz");DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");System.out.pri ntln ("formatl = " + formatl.format(rightNow);System.out.pri ntln ("format2 = " + format2.format(rightNow);System.out.pri

34、ntln ("format3 = " + format3.format(rightNow);System.out.pri ntl n("format4 = " + format4.format(rightNow);System.out.pri ntln ("format5 = " + format5.format(rightNow);System.out.pri ntln ("format6 = " + format6.format(rightNow);System.out.pri ntln ("form

35、at7 = " + format7.format(rightNow);输出结果:引用formatl = 2006-12-05 06:12:02format2 = 2006-12-05format3 = 6:12 下午format4 = 2006.12.05 公元 at 18:12:02 CSTformat5 = 星期二,十二月,05, '2006format6 = 2006.12.05 18:12 o'clock 下午,中国标准时间format7 = 02006.十二月.05 公元 06:12 下午取当月的第一天:java.text.SimpleDateFormat

36、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);取当月的最后一天:Cale ndar cal = Cale ndar.getl nsta nce();int maxDay二cals.getActualMaximum(Cale ndar.DAY_OF_MONTH);java.text.Format formatter3 二newjava.text.SimpleDateFormat("yyyy-MM-"+maxDay);System.out.pri ntl n( formatter3.format(cal.getTime();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1