`

Java 时间格式化

    博客分类:
  • J2EE
阅读更多
偶尔需要格式化时间,所以这里把网上的经验都集中起来,方便自己查询。

Java中,我经常使用java.util.Date,但是好多方法都废弃,不过还是写了小程序
package com.time.example;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * UTC是协调世界时(Universal Time Coordinated)英文缩写,
 * 是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。
 * UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,
 * 以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。 
 * @author menuz
 *
 */
public class TimeFormat1 {
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		Date date = c.getTime();
		// 运行电脑时间2012/01/17 2:18pm
		System.out.println(date.getDate());		
		//結果:17			//解釋: 几号	
		System.out.println(date.getDay());
		//2 				// 周二   0为周日
		System.out.println(date.getHours());	
		//14
		System.out.println(date.getMinutes());
		//18
		System.out.println(date.getMonth());
		//0 				// 月从0开始计算
		System.out.println(date.getSeconds());
		//26				// 秒
		System.out.println(date.getTime());	
		//1326781106425		// Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT
		System.out.println(date.getTimezoneOffset());
		//-480				// 東八區,比0時區快了八個小時,60*8
		System.out.println(date.getYear());			
		//112
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		System.out.println(sdf.format(date));
		//2012年01月17日 14时18分26秒
	}
}



但是使用SimpleDateFormat更加灵活,而且更加适合编程的需要
java.text.SimpleDateFormat
java.lang.Object
  java.text.Format
      java.text.DateFormat
          java.text.SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。

A-Z,a-z都是保留关键字
当Date and Time string为 "yyyy-mm-dd" 显示 年-月-日
当Date and Time string为 "bb" 报错,保留字未定义,见下图
使用'可以防止SimpleDateFormat将s转义
当Date and Time string为 " 'b' " 不报错


一个SimpleDateFormat小例子
package com.time.example;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TimeFormat2 {

 public static void main(String[] args) throws ParseException {
		SimpleDateFormat CeshiFmt0 = new SimpleDateFormat(
				"Gyyyy年MM月dd日 HH时mm分ss秒");
		SimpleDateFormat CeshiFmt1 = new SimpleDateFormat("asd 'b' yyyy/MM/dd HH:mm");
		SimpleDateFormat CeshiFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		SimpleDateFormat CeshiFmt3 = new SimpleDateFormat(
				"yyyy年MM月dd日 HH时mm分ss秒 E ");
		SimpleDateFormat CeshiFmt4 = new SimpleDateFormat("yyyy/MM/dd E");
		SimpleDateFormat CeshiFmt5 = new SimpleDateFormat( 
				"一年中的第 D 天 ,第w个星期 ,一个月中第W个星期 ,k时 z时区");
		Date now = new Date();
		System.out.println(CeshiFmt0.format(now));
		System.out.println(CeshiFmt1.format(now));
		System.out.println(CeshiFmt2.format(now));
		System.out.println(CeshiFmt3.format(now));
		System.out.println(CeshiFmt4.format(now));
		System.out.println(CeshiFmt5.format(now));
                
/*输出结果:
AD2012年01月17日 15时21分36秒
PM3617 b 2012/01/17 15:21
2012-01-17 15:21:36
2012年01月17日 15时21分36秒 Tue 
2012/01/17 Tue
一年中的第 17 天 ,第3个星期 ,一个月中第3个星期 ,15时 CST时区
*/
 }

}



java.util.Calendar
Calendar is an abstract base class for converting between a Date object and a set of integer fields such as YEAR, MONTH, DAY, HOUR, and so on. (A Date object represents a specific instant in time with millisecond precision. See Date for information about the Date class.)

Subclasses of Calendar interpret a Date according to the rules of a specific calendar system. The platform provides one concrete subclass of Calendar: GregorianCalendar. Future subclasses could represent the various types of lunar calendars in use in many parts of the world.

package com.time.example;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeFormat3 {
	 public static void main(String[] args) throws ParseException {
			Calendar calendar = Calendar.getInstance();
			//当前时间为2012/01/17 15:59:8
			System.out.println(calendar.get(Calendar.YEAR));
			//输出:2012
			System.out.println(calendar.get(Calendar.MONTH));
			//0
			System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
			//17
			System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
			//15
			System.out.println(calendar.get(Calendar.MINUTE));
			//49
			System.out.println(calendar.get(Calendar.SECOND));
			//8
	 }



凌晨的判断 00:00:00
1)
SimpleDateFormat timeFormat = new SimpleDateFormat("HHmmss");
Date now = new Date();
if(timeFormat.format(now).equals("000000")) {
  System.out.println("凌晨");
}

2)
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.Hour);
int minute = cal.get(Calendar.Minute);
int second = cal.get(Calendar.Second);
if(hour == 0 && minute == 0 && second == 0) {
  System.out.println("凌晨");
}






附java时间操作函数汇总:http://www.iteye.com/topic/256420
  • 大小: 79.6 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics