jdk对日期的操作及相关api.docx

上传人:b****4 文档编号:11694764 上传时间:2023-03-30 格式:DOCX 页数:17 大小:21.73KB
下载 相关 举报
jdk对日期的操作及相关api.docx_第1页
第1页 / 共17页
jdk对日期的操作及相关api.docx_第2页
第2页 / 共17页
jdk对日期的操作及相关api.docx_第3页
第3页 / 共17页
jdk对日期的操作及相关api.docx_第4页
第4页 / 共17页
jdk对日期的操作及相关api.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

jdk对日期的操作及相关api.docx

《jdk对日期的操作及相关api.docx》由会员分享,可在线阅读,更多相关《jdk对日期的操作及相关api.docx(17页珍藏版)》请在冰豆网上搜索。

jdk对日期的操作及相关api.docx

jdk对日期的操作及相关api

java日期转化操作大全

时间和日期中常用到的几个类:

java.util.Date,

java.util.Calendar,

java.util.GregorainCalendar,

java.text.DateFormat,

java.text.SimpleDateFormat

java.util.Date常用的构造方法:

Date();

Date(longdate)

(longdate)表示从标准基准时间(称为"历元"epoch,即1970.1.1

00:

00:

00GMT)经历的毫秒数。

主要的方法:

(介绍几个常用的,详细的查询jdk文档)

booleanafter(Datewhen)测试日期在此日期之后。

booleanbefore(Datewhen)测试日期在此日期之前。

Objectclone()返回此对象的副本

longgetTime()返回自1970.1.100:

00:

00GMT后,此对象表示的毫秒数

voidsetTime(longtime)设置此Date对象,以表示1970年1月1日

00:

00:

00GMT以后time毫秒的时间点。

StringtoString()将Date对象转化成以下形式的

String:

dowmonddhh:

mm:

sszzzyyyy

其中:

dow是一周中的某一天(Sun,Mon,Tue,Wed,Thu,Fri,Sat)。

mon是月份(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()获得当前系统时间的毫秒数

java.util.Calendar:

Calendar类是一个抽象类.

CalendarrightNow=Calendar.getInstance();

可以使用三种方法更改日历字段:

set()、add()和roll()。

set(f,value)将日历字段f更改为value。

此外,它设置了一个内部成员变量,以指示日历字段f已经被更改。

尽管日历字段

f是立即更改的,但是直到下次调用get()、getTime()、getTimeInMillis()、

add()或roll()时才会重新计算日历的时间值(以毫秒为单位)。

因此,多次调用set()不会触发多次不必要的计算。

add(f,delta)将delta添加到f字段中。

这等同于调用

set(f,get(f)+delta)

roll(f,delta)将delta添加到f字段中,但不更改更大的字段。

java.util.GregorianCalendar:

GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家

使用的标准日历系统。

java.text.DateFormat:

DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并

分析日期或时间。

java.text.SimpleDateFormat:

SimpleDateFormat是一个以与语言环境相关的方式来格式化和分析日期的具体类。

它允许进行格式化(日期->文本)、分析(文本->日期)和规范化。

SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。

但是,

仍然建议通过DateFormat中的getTimeInstance、getDateInstance或

getDateTimeInstance来新的创建日期-时间格式化程序。

每一个这样的类方法

都能够返回一个以默认格式模式初始化的日期/时间格式化程序。

可以根据需要使用

applyPattern方法来修改格式模式。

日期和时间格式由日期和时间模式字符串指定。

在日期和时间模式字符串中,未加引号的字母'A'到'Z'和'a'到'z'

被解释为模式字母,用来表示日期或时间字符串元素。

字母日期或时间元素表示示例

GEra标志符TextAD

y年Year1996;96

M年中的月份MonthJuly;Jul;07

w年中的周数Number27

W月份中的周数Number2

D年中的天数Number189

d月份中的天数Number10

F月份中的星期Number2

E星期中的天数TextTuesday;Tue

aAm/pm标记TextPM

H一天中的小时数(0-23)Number0

k一天中的小时数(1-24)Number24

Kam/pm中的小时数(0-11)Number0

ham/pm中的小时数(1-12)Number12

m小时中的分钟数Number30

s分钟中的秒数Number55

S毫秒数Number978

获得当前系统的毫秒数:

Java代码

packageorg.lokvin.example.calendar;

publicclassCalendarExample1{

publicstaticvoidmain(String[]args){

java.util.Datedate=newjava.util.Date();

//获得当前系统的毫秒数,自1970.1.100:

00:

00GMT

longtime=System.currentTimeMillis();

java.util.Datedate1=newjava.util.Date(time);

System.out.println("date="+date.toString());

System.out.println("millisecond="+time);

System.out.println("date1="+date1.toString());

}}

运行结果:

date=MonDec0416:

01:

16CST2006

millisecond=1165219276771

date1=MonDec0416:

01:

16CST2006

Java代码

packageorg.lokvin.example.calendar;

importjava.util.Calendar;

importjava.util.GregorianCalendar;

publicclassCalendarExample2{

publicstaticvoidmain(String[]args){

//获得当前日期

intyear=calendar.get(Calendar.YEAR);//200

System.out.println("YEAR="+year);

//获得当前月份,0..11表示JAN..DEC

intmonth=calendar.get(Calendar.MONTH);

System.out.println("Month="+month);//0=JAN...11=DEC

intday=calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("DayofMonth="+day);//1

//获得日期在本周的天数,Sun=1,Mon=2...Sta=7

intday_of_week=calendar.get(Calendar.DAY_OF_WEEK);

System.out.println("DayofWeek="+day_of_week);

//获得当前时间12时制是Calendar.HOUR

inthour12=calendar.get(Calendar.HOUR);

//获得AM,PM,0=AM,1=PM

intampm=calendar.get(Calendar.AM_PM);

System.out.println("hour12="+hour12);

System.out.println("ampm="+ampm);//0=am,1=pm

//获得当前时间24时制Calendar.HOUR_OF_DAY

inthour24=calendar.get(Calendar.HOUR_OF_DAY);

System.out.println("hour24="+hour24);

Calendartoday=newGregorianCalendar(2006,Calendar.DECEMBER,4);

//Calendar.getInstance()得到当前具体到毫秒的一个时间点

System.out.println("calendar="+calendar.getTime().toString());

//通过newGregorianCalendar(2006,Calendar.DECEMBER,4)

//生成的calendar除了指定的年,月,日其余为0(时分秒=0)

System.out.println("today="+today.getTime().toString());

}

}

两个日期之间的比较:

查看源代码

packageorg.lokvin.example.calendar;

importjava.util.Calendar;

importjava.util.GregorianCalendar;

/*

*比较两个calendar对象之间的先后

*/

publicclassCalendarExample3{

publicstaticvoidmain(String[]args){

//日期比较

Calendarxmas=newGregorianCalendar(2006,Calendar.DECEMBER,25);

CalendarnewYear=newGregorianCalendar(2007,Calendar.JANUARY,1);

//比较两个日期先后

booleanflag=xmas.before(newYear);

System.out.println("flag="+flag);

flag=xmas.after(newYear);

System.out.println("flag="+flag);

//两个日期相差的毫秒数

longtimeDiffMillis=newYear.getTimeInMillis()-xmas.getTimeInMillis();

System.out.println("timediffmillis="+timeDiffMillis);

//两个日期相差的秒数

longdiffSecs=timeDiffMillis/1000;

System.out.println("timediffsecs="+diffSecs);

//两个日期相差的分钟

longdiffMins=timeDiffMillis/(1000*60);

System.out.println("timediffmins="+diffMins);

//两个日期相差的小时

longdiffHours=timeDiffMillis/(1000*60*60);

System.out.println("timediffhours="+diffHours);

//两个日期相差的天

longdiffDays=timeDiffMillis/(1000*60*60*24);

System.out.println("timediffdays="+diffDays);

}

}

运行结果:

引用

flag=true

flag=false

timediffmillis=604800000

timediffsecs=604800

timediffmins=10080

timediffhours=168

timediffdays=7

使用Calendar计算年龄:

代码:

packageorg.lokvin.example.calendar;

importjava.util.Calendar;

importjava.util.GregorianCalendar;

/*

*计算年龄

*/

publicclassCalendarExample4{

publicstaticvoidmain(String[]args){

//创建生日的Calendar对象

CalendarbirthDate=newGregorianCalendar(1979,Calendar.JULY,7);

Calendartoday=Calendar.getInstance();

intage=today.get(Calendar.YEAR)-birthDate.get(Calendar.YEAR);

//如果还没有过生日,则age-1

birthDate.add(Calendar.YEAR,age);

if(today.before(birthDate)){

age--;

}

System.out.println("age="+age);

}

}

判断是否为闰年:

代码

packageorg.lokvin.example.calendar;

importjava.util.GregorianCalendar;

/*

*判断是否为闰年leapyear

*/

publicclassCalendarExample5{

publicstaticvoidmain(String[]args){

//判断是否"闰年"leapyear

GregorianCalendarcal=newGregorianCalendar();

booleanisLeapYear=cal.isLeapYear(1998);

System.out.println("isleapyear1998="+isLeapYear);

isLeapYear=cal.isLeapYear(2000);

System.out.println("isleapyear2000="+isLeapYear);

}

}

格式化日期:

Java代码

packageorg.lokvin.example.calendar;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.Date;

publicclassDateForamExample{

publicstaticvoidmain(String[]args){

DaterightNow=newDate();

DateFormatformat1=newSimpleDateFormat("yyyy-MM-ddhh:

mm:

ss");

DateFormatformat2=newSimpleDateFormat("yyyy-MM-dd");

DateFormatformat3=newSimpleDateFormat("h:

mma");

DateFormatformat4=newSimpleDateFormat("yyyy.MM.ddG'at'HH:

mm:

ssz");

DateFormatformat5=newSimpleDateFormat("EEE,MMM,dd,''yyyy");

DateFormatformat6=newSimpleDateFormat("yyyy.MM.ddkk:

mm'o''clock'a,zzzz");

DateFormatformat7=newSimpleDateFormat("yyyyy.MMMMM.ddGGGhh:

mmaaa");

System.out.println("format1="+format1.format(rightNow));

System.out.println("format2="+format2.format(rightNow));

System.out.println("format3="+format3.format(rightNow));

System.out.println("format4="+format4.format(rightNow));

System.out.println("format5="+format5.format(rightNow));

System.out.println("format6="+format6.format(rightNow));

System.out.println("format7="+format7.format(rightNow));

}

}

输出结果:

引用

format1=2006-12-0506:

12:

02

format2=2006-12-05

format3=6:

12下午

format4=2006.12.05公元at18:

12:

02CST

format5=星期二,十二月,05,'2006

format6=2006.12.0518:

12o'clock下午,中国标准时间

format7=02006.十二月.05公元06:

12下午

取当月的第一天:

java.text.SimpleDateFormatformat=newjava.text.SimpleDateFormat("yyyy-MM-01");

java.util.DatefirstDay=newjava.util.Date();

System.out.println("themonthfirstdayis"+formats.format(firstDay));

取当月的最后一天:

Calendarcal=Calendar.getInstance();

intmaxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);//重要api

java.text.Formatformatter3=newjava.text.SimpleDateFormat("yyyy-MM-"+maxDay);

System.out.println(formatter3.format(cal.getTime()));

Java将Unix时间戳转换成普通日期

publicStringTimeStampDate(StringtimestampString){

Longtimestamp=Long.parseLong(timestampString)*1000;

Stringdate=newjava.text.SimpleDateFormat("yyyy/MM/ddHH:

mm:

ss").format(newjava.util.Date(timestamp));

returndate;

}

多来几个经典的实例

1.计算某一月份的最大天数

Calendartime=Calendar.getInstance();

time.clear();

time.set(Calendar.YEAR,year);//year为int

time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0

intday=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

注:

在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

2.Calendar和Date的转化

(1)Calendar转化为Date

Calendarcal=Calendar.getInstance();

Datedate=cal.getTime();

(2)Date转化为Calendar

Datedate=newDate();

Calendarcal=Calendar.getInstance();

cal.setTime(date);

3.格式化输出日期时间(这个用的比较多)

其一

Datedate=newDate();

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:

mm:

ss");

Stringtime=df.format(date);

System.out.println(time);//2008-10-2708:

52:

32

其二

Calendarc=Calendar.getInstance();

System.out.println(c.getTime()

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

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1