`
cakin24
  • 浏览: 1335537 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

DateFormat类在国际化中的应用

    博客分类:
  • java
 
阅读更多

1 DateFormat类简介
DateFormat都包含了format和parse方法,其中format用于将日期格式化成字符串,parse用于将字符串解析成日期。


2 DateFormat类的方法
getDateInstance:返回一个日期格式器,它格式化后的字符串只有日期,没有时间。该方法可以传入多个参数,用于指定日期样式和Locale等参数。如果不指定这些参数,则使用默认参数。
getTimeInstance:返回一个时间格式器,它格式化后的字符串只有时间,没有日期。该方法可以传入多个参数,用于指定时间样式和Locale等参数。如果不指定这些参数,则使用默认参数。
getDateTimeInstance:返回一个日期、时间格式器,它格式化后的字符串既有日期,也有时间。该方法可以传入多个参数,用于指定日期样式、时间样式和Locale等参数。如果不指定这些参数,则使用默认参数。

 

3 代码示例

import java.util.*;
import java.text.*;
import static java.text.DateFormat.*;

public class DateFormatTest
{
	public static void main(String[] args)
		throws ParseException
	{
		// 需要被格式化的时间
		Date dt = new Date();
		// 创建两个Locale,分别代表中国、美国、法国
		Locale[] locales = {Locale.CHINA, Locale.US,Locale.FRANCE};
		DateFormat[] df = new DateFormat[24];
		// 为上面两个Locale创建16个DateFormat对象
		for (int i = 0 ; i < locales.length ; i++)
		{
			df[i * 8] = DateFormat.getDateInstance(SHORT, locales[i]);
			df[i * 8 + 1] = DateFormat.getDateInstance(MEDIUM, locales[i]);
			df[i * 8 + 2] = DateFormat.getDateInstance(LONG, locales[i]);
			df[i * 8 + 3] = DateFormat.getDateInstance(FULL, locales[i]);
			df[i * 8 + 4] = DateFormat.getTimeInstance(SHORT, locales[i]);
			df[i * 8 + 5] = DateFormat.getTimeInstance(MEDIUM , locales[i]);
			df[i * 8 + 6] = DateFormat.getTimeInstance(LONG , locales[i]);
			df[i * 8 + 7] = DateFormat.getTimeInstance(FULL , locales[i]);
		}
		for (int i = 0 ; i < locales.length ; i++)
		{
			String tip = i == 0 ? "----中国日期格式----":
				i ==1 ?"----美国日期格式----":"----法国日期格式----";
			System.out.println(tip);
			System.out.println("SHORT格式的日期格式:"
				+ df[i * 8].format(dt));
			System.out.println("MEDIUM格式的日期格式:"
				+ df[i * 8 + 1].format(dt));
			System.out.println("LONG格式的日期格式:"
				+ df[i * 8 + 2].format(dt));
			System.out.println("FULL格式的日期格式:"
				+ df[i * 8 + 3].format(dt));
			System.out.println("SHORT格式的时间格式:"
				+ df[i * 8 + 4].format(dt));
			System.out.println("MEDIUM格式的时间格式:"
				+ df[i * 8 + 5].format(dt));
			System.out.println("LONG格式的时间格式:"
				+ df[i * 8 + 6].format(dt));
			System.out.println("FULL格式的时间格式:"
				+ df[i * 8 + 7].format(dt));
		}


		String str1 = "2014-12-12";
		String str2 = "2014年12月10日";
		// 下面输出 Fri Dec 12 00:00:00 CST 2014
		System.out.println(DateFormat.getDateInstance().parse(str1));
		// 下面输出 Wed Dec 10 00:00:00 CST 2014
		System.out.println(DateFormat.getDateInstance(LONG).parse(str2));
		// 下面抛出 ParseException异常
		System.out.println(DateFormat.getDateInstance().parse(str2));
	}
}

 
4 运行结果

----中国日期格式----
SHORT格式的日期格式:16-9-3
MEDIUM格式的日期格式:2016-9-3
LONG格式的日期格式:2016年9月3日
FULL格式的日期格式:2016年9月3日 星期六
SHORT格式的时间格式:上午11:51
MEDIUM格式的时间格式:11:51:11
LONG格式的时间格式:上午11时51分11秒
FULL格式的时间格式:上午11时51分11秒 CST
----美国日期格式----
SHORT格式的日期格式:9/3/16
MEDIUM格式的日期格式:Sep 3, 2016
LONG格式的日期格式:September 3, 2016
FULL格式的日期格式:Saturday, September 3, 2016
SHORT格式的时间格式:11:51 AM
MEDIUM格式的时间格式:11:51:11 AM
LONG格式的时间格式:11:51:11 AM CST
FULL格式的时间格式:11:51:11 AM CST
----法国日期格式----
SHORT格式的日期格式:03/09/16
MEDIUM格式的日期格式:3 sept. 2016
LONG格式的日期格式:3 septembre 2016
FULL格式的日期格式:samedi 3 septembre 2016
SHORT格式的时间格式:11:51
MEDIUM格式的时间格式:11:51:11
LONG格式的时间格式:11:51:11 CST
FULL格式的时间格式:11 h 51 CST
Fri Dec 12 00:00:00 CST 2014
Wed Dec 10 00:00:00 CST 2014
Exception in thread "main" java.text.ParseException: Unparseable date: "2014年12月10日"
 at java.text.DateFormat.parse(DateFormat.java:366)
 at DateFormatTest.main(DateFormatTest.java:59)

 

5 运行说明

上面代码的最后一行代码解析日期字符串时引发ParseException异常,因为“2014年12月10日”是一个LONG样式的日期字符串,必须用LONG格式的DateFormat实例解析,否则将抛出异常。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics