首页 > 代码库 > 总结一下关于时间的一些类

总结一下关于时间的一些类

今天下午,闲着没事,突然看到一些关于时间类的一些用法,感觉几个类有点复杂,就总结一下:

    (一些不对的地方还麻烦大家指出来,不要让我误导了初学者。谢谢)j_0057.gif

具体的类主要有这几个:

  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(),以获得此类型的一个通用的对象。CalendargetInstance 方法返回一个 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中 的 getTimeInstancegetDateInstancegetDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。


   下面是  利用 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

很简单吧。。。

    只是简单的介绍了一些简单的用法,满足我们的一般要求,深入的以后具体来说。


希望对你们有帮助。


本文出自 “专注Java,linux技术” 博客,请务必保留此出处http://wuqinglong.blog.51cto.com/9087037/1432423