今天下午,闲着没事,突然看到一些关于时间类的一些用法,感觉几个类有点复杂,就总结一下:
(一些不对的地方还麻烦大家指出来,不要让我误导了初学者。谢谢)
具体的类主要有这几个:
Date Calendar SimpleDateFormat
1、Date类
这个类中的大部分方法都过时了。
具体可以这么用:
Date date = new Date(); System.out.println(date.toString());
可以直接打印出当前的时间:Mon Jun 30 12:50:09 CST 2014
只不过格式不太好看,没关系,一会儿给他们穿件好看的衣服。
有一个方法没有过时:
Date date = new Date(); System.out.println(date.geTime());
这个方法是返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
可以用来测试一个程序运行的总毫秒数,或者秒数。
还可以直接用:
long now = System.currentTimeMillis();
这个方法与上述方法得到的结果是一样的。
2、Calendar抽象类
这个类很强大,基本上代替了以前的Date类。Calendar
提供了一个类方法
getInstance()
,以获得此类型的一个通用的对象。Calendar
的
getInstance
方法返回一个 Calendar
对象,其日历字段已由当前日期和时间初始化。所以 这个类不能来 new 只能通过
Calendar now = Calendar.getInstance();
来实例化对象。
直接看一个例子来理解一下怎么用则会个类:
import java.util.Calendar; public class TestDate { public static void main(String[] args) { // 获得当前日期 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); System.out.println("YEAR = " + year); //2014 int month = calendar.get(Calendar.MONTH); // 获得当前月份, 0..11 表示 JAN..DEC System.out.println("Month = " + month);// 5 //获取一个月中的第几天。见名知意 int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("Day of Month = " + day); // 30 // 获得日期在本周的天数, Sun=1, Mon=2 ... Sta=7 int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("Day of Week = " + day_of_week); // 1 // 获得当前时间 12 时制是 Calendar.HOUR int hour12 = calendar.get(Calendar.HOUR); System.out.println("hour 12 = " + hour12); // 1 // 获得 AM ,PM , 0 = AM, 1 = PM int ampm = calendar.get(Calendar.AM_PM); // 1 System.out.println("am pm = " + ampm); // 0 = am , 1 = pm // 获得当前时间 24 时制 Calendar.HOUR_OF_DAY int hour24 = calendar.get(Calendar.HOUR_OF_DAY); System.out.println("hour 24 = " + hour24); //13 完整的显示时间: String date = calendar.get(Calendar.YEAR)+"-" +calendar.get(Calendar.MONTH)+"-" +calendar.get(Calendar.DAY_OF_MONTH) +" "+calendar.get(Calendar.HOUR_OF_DAY)+":" +calendar.get(Calendar.MINUTE)+":" +calendar.get(Calendar.SECOND); System.out.println(date); } }
呵呵,最后一个“完整的现实时间”看起来有点复杂吧,所以我一般不用这个。后边还有更好的方法。
Calendar这个类里边有好多成员变量,上边程序只是列出了一部分,其它的可以查阅 java 的 API至于API可以去本站下载,资源应有尽有。
3、SimpleDateFormat类
说SimpleDateFormat先说一下它的爸爸:
DateFormat。
我们可以通过 DateFormat中 的
getTimeInstance
、getDateInstance
或
getDateTimeInstance
来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。
下面是 利用 DateFormat来返回是一个时间或者日期格式化:
返回一个 默认的时间格式器:
DateFormat format = DateFormat.getTimeInstance(); Date date = new Date(); System.out.println(format.format(date)); //14:05:11
返回一个 默认的日期格式器:
DateFormat format = DateFormat.getDateInstance(); Date date = new Date(); System.out.println(format.format(date)); //2014-6-30
返回一个 默认的日期-时间格式器:
DateFormat format = DateFormat.getDateTimeInstance(); Date date = new Date(); System.out.println(format.format(date)); //2014-6-30 14:08:08
SimpleDateFormat用来格式化日期或者时间更自由。
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 ->
文本)、解析(文本 -> 日期)和规范化。
日期和时间格式由日期和时间模式 字符串指定。
定义了以下模式字母(所有其他字符 ‘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 |
例如:
Date date = new Date(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd"); System.out.println(format1.format(date)); // 2014-06-30 System.out.println(format2.format(date)); // 2014/06/30
格式化的时候 字符串中的 "-" 会被忽略,输出的时候按照你规定的格式输出。
很方便吧,比上边的那个简单多了。
再来个例子:
SimpleDateFormat format3 = new SimpleDateFormat("HH:mm:ss"); //14:30:32 SimpleDateFormat format4 = new SimpleDateFormat("HH:mm:ss a"); //14:30:32 下午
然后用 format3.format(date); 来格式化 Date 对象。 使它我们规定的格式来输出。
如果想看 我们用那种 模式来格式化的话,有一个方法可以帮助我们实现,就是
System.out.println(format3.toPattern()); // HH:mm:ss
很简单吧。。。
只是简单的介绍了一些简单的用法,满足我们的一般要求,深入的以后具体来说。
希望对你们有帮助。