一、时间和日期中常用到的几个类:
java.util.Date,
java.util.Calendar,
java.util.GregorainCalendar,
java.util.Date :
表示特定瞬间,精确到毫秒
一天是24 * 60 * 60 = 86400 秒
世界时(UT 或UTC) , 格林威治时间(GMT), 格林威治时(GMT)和世界时(UT)
是相等的,格林威治时(GMT) 是标准的"民间"称呼, 世界时(UT) 是相同标准的
科学称呼。UTC 和UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的。
二、常用的构造方法:
Date();
Date(long date)
(long date) 表示从标准基准时间(称为"历元" epoch ,即1970.1.1
00:00:00 GMT)经历的毫秒数。
还有一些构造方法已经deprecated 了
三、主要的方法:(介绍几个常用的,详细的查询jdk 文档)
boolean after(Date when) 测试日期在此日期之后。
boolean before(Date when) 测试日期在此日期之前。
Object clone() 返回此对象的副本
long getTime() 返回自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 是月份(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 类是一个抽象类.
Calendar rightNow = Instance();
可以使用三种方法更改日历字段: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 的一个具体子类,提供了世界上大多数国家
使用的标准日历系统。
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。
SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。
它允许进行格式化(日期-> 文本)、分析(文本-> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,
仍然建议通过DateFormat 中的getTimeInstance、getDateInstance 或getDateTimeInstance 来新的创建日期-时间格式化程序。每一个这样的类方法
都能够返回一个以默认格式模式初始化的日期/时间格式化程序。可以根据需要使用applyPattern 方法来修改格式模式。
日期和时间格式由日期和时间模式字符串指定。
在日期和时间模式字符串中,未加引号的字母'A' 到'Z' 和'a' 到'z'
被解释为模式字母,用来表示日期或时间字符串元素。
字母日期或时间元素表示示例
G Era 标志符Text AD
y 年Year 1996; 96
M 年中的月份Month July; Jul; 07
w 年中的周数Number 27
W 月份中的周数Number 2
D 年中的天数Number 189
d 月份中的天数Number 10
F 月份中的星期Number 2
E 星期中的天数Text Tuesday; Tue
a Am/pm 标记Text PM
H 一天中的小时数(0-23)Number 0
k 一天中的小时数(1-24)Number 24
K am/pm 中的小时数(0-11)Number 0
h am/pm 中的小时数(1-12)Number 12
m 小时中的分钟数Number 30
s 分钟中的秒数Number 55
S 毫秒数Number 978
z 时区General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区RFC 822 time zone -0800
引用
日期和时间模式结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.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:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010*********-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
获得当前系统的毫秒数:
Java代码
查看源代码
打印java时间日期格式转换
01.package ample.calendar;
02.
03.public class CalendarExample1 {
04.
05. public static void main(String[] args) {
06.
07. java.util.Date date = new java.util.Date();
08. //获得当前系统的毫秒数,自1970.1.1 00:00:00 GMT
09. long time = System.currentTimeMillis();
10. java.util.Date date1 = new java.util.Date(time);
11. System.out.println("date = " + String());
12. System.out.println("millisecond = " + time);
13. System.out.println("date1 = " + String());
14. }
15.
16.}
运行结果:
引用
date = Mon Dec 04 16:01:16 CST 2006
millisecond = 1165219276771
date1 = Mon Dec 04 16:01:16 CST 2006
代码:
Java代码
查看源代码
打印
01.package ample.calendar;
02.
03.import java.util.Calendar;
04.import java.util.GregorianCalendar;
05.
06.public class CalendarExample2 {
07.
08. public static void main(String[] args) {
09. //获得当前日期
10. Calendar calendar = Instance();
11. int era = (Calendar.ERA);// 0 = BC, 1 = AD
12. System.out.println("ERA = " + era);
13. int year = (Calendar.YEAR); //2006
14. System.out.println("YEAR = " + year);
15. int month = (Calendar.MONTH);
16. //获得当前月份,0..11 表示JAN..DEC
17. System.out.println("Month = " + month);//0 = JAN ... 11 = DEC
18. int day = (Calendar.DAY_OF_MONTH);
19. System.out.println("Day of Month = " + day); // 1
20. //获得日期在本周的天数,Sun=1, Mon=2 ... Sta=7
21. int day_of_week = (Calendar.DAY_OF_WEEK);
22. System.out.println("Day of Week = " + day_of_week);
23.
24. //获得当前时间12 时制是Calendar.HOUR
25. int hour12 = (Calendar.HOUR);
26. //获得AM ,PM , 0 = AM, 1 = PM
27. int ampm = (Calendar.AM_PM);
28. System.out.println("hour 12 = " + hour12);
29. System.out.println("am pm = " + ampm); //0 = am , 1 = pm
30. //获得当前时间24 时制Calendar.HOUR_OF_DAY
31. int hour24 = (Calendar.HOUR_OF_DAY);
32. System.out.println("hour 24 = " + hour24);
33.
34.
35. Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4);
36. //Instance() 得到当前具体到毫秒的一个时间点
37. System.out.println("calendar = " + Time().toString());
38. //通过new GregorianCalendar(2006, Calendar.DECEMBER, 4)
39. //生成的calendar 除了指定的年,月,日其余为0(时分秒=0)
40. System.out.println("today = " + Time().toString());
41.
42.
43. }
44.
45.}
运行结果:
引用
ERA = 1
YEAR = 2006
Month = 11
Day of Month = 4
Day of Week = 2
hour 12 = 4
am pm = 1
hour 24 = 16
calendar = Mon Dec 04 16:22:42 CST 2006
today = Mon Dec 04 00:00:00 CST 2006
两个日期之间的比较:
代码:
Java代码
查看源代码
打印
01.package ample.calendar;
02.
03.import java.util.Calendar;
04.import java.util.GregorianCalendar;
05.
06./*
07.* 比较两个calendar 对象之间的先后
08.*/
09.public class CalendarExample3 {
10.
11. public static void main(String[] args) {
12. //日期比较
13. Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25);
14. Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1);
15.
16. //比较两个日期先后
17. boolean flag = xmas.before(newYear);
18. System.out.println("flag = " + flag);
19.
20. flag = xmas.after(newYear);
21. System.out.println("flag = " + flag);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论