/*
* 本程序演示了Java中日期和时间相关类的操作,涉及的主要类有:
* Date、Locale、DateFormat、SimpleDateFormat、DateFormatSymbols、Calendar、GregorianCalendar
* 基本的操作思想有两种:
* 1、得到Date对象->用DateFormat或SimpleDateFormat格式化Date对象->如需要,用DateFormatSymbols自定义格式显示->如需要,可以指定区域设置。
* 2、得到Date对象->用Calendar相关类实现,可以得到一个一个有关日期和时间的值,更灵活->如需要,可以设置时区和区域。
*/
package com.lwj.demo;
import java.util.*;//Date、Locale、Calendar、GregorianCalendar等类要用到
import java.text.*;//DateFormat、SimpleDateFormat、DateFormatSymbols等类要用到
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
Date today;
String dateOut;
// Locale currentLocale=Locale.getDefault();//new
// Locale("zh","CN");//这里可以得到缺省区域设置或者设置区域
DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.LONG, DateFormat.LONG);// ,currentLocale);//这个方法很重要,两个参数分别表示日期和时间的格式
today = new Date();
dateOut = dateFormatter.format(today);// 用getDateTimeInstance方法指定的格式格式化Date对象,返回String值
System.out.println("当前缺省的区域设置为:" + Locale.getDefault());
System.out.println("现在为:" + dateOut);
// 以下用DateFormatSymbols和SimpleDateFormat的类配合,自定义自己的日期格式符
DateFormatSymbols formatSymbols = DateFormatSymbols.getInstance();// 如果想自定义日期的格式符,可用DateFormatSymbols类,此处用其静态方法getInstance()返回其对象,也可用构造方法实现,同时还可指定区域设置。
System.out.println("——————原来的时间标志——————");
String[] oldAmPm = formatSymbols.getAmPmStrings();// 得到AM_PM格式符
for (String str : oldAmPm)
System.out.print(str + " ");// 看看先后的顺序
System.out.println();
System.out.println("——————现在的时间标志——————");
String[] newAmPm = { "白天", "晚上" };// 自定义的AM_PM格式符,注意先后的顺序
formatSymbols.setAmPmStrings(newAmPm);// 设置成自己的AM_PM格式符
for (String str : formatSymbols.getAmPmStrings())
System.out.print(str + " ");// 再看看改变后的结果
System.out.println();
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy年M月dd日ah时mm分ss秒", formatSymbols);// 用SimpleDateFormat类的构造方法可设置格式,"yyyy年M月dd日ah时mm分ss秒"为格式字符串,formatSymbols为格式符(自定义日期格式符用,如果不自定义,也可不用)。
dateOut = formatter.format(today);
System.out.println("现在为:" + dateOut);
System.out.println(formatter.parse("2008年8月8日晚上8时00分00秒"));// 这个演示了用parse()方法将字符串转换为Date对象,注意作为参数的字符串必须符合生成SimpleDateFormat对象的格式字符串
System.out.println("—————————使用Calendar相关类获得日期和时间—————————");
Calendar calendar = new GregorianCalendar();// Calendar相关类提供了另一种实现日期和时间的方法,GregorianCalendar的构造方法可以指定时区(TimeZone)和区域设置(Locale)
calendar.setTime(today);
System.out.println("年: " + calendar.get(Calendar.YEAR));
System.out.println("月: " + (calendar.get(Calendar.MONTH) + 1));
System.out.println("日: " + calendar.get(Calendar.DATE));
System.out.println("AM_PM标志: " + calendar.get(Calendar.AM_PM));
System.out.println("时: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分: " + calendar.get(Calendar.MINUTE));
System.out.println("秒: " + calendar.get(Calendar.SECOND));
}
}
这个程序的结果如下:
当前缺省的区域设置为:zh_CN
现在为:2009年8月28日 下午11时52分46秒
——————原来的时间标志——————
上午 下午
——————现在的时间标志——————
白天 晚上
现在为:2009年8月28日晚上11时52分46秒
Fri Aug 08 20:00:00 CST 2008
—————————使用Calendar相关类获得日期和时间—————————
年: 2009
月: 8
日: 28
AM_PM标志: 1
时: 23
分: 52
秒: 46