Chinaunix首页 | 论坛 | 博客
  • 博客访问: 742645
  • 博文数量: 130
  • 博客积分: 2951
  • 博客等级: 少校
  • 技术积分: 1875
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 18:32
文章分类

全部博文(130)

文章存档

2013年(1)

2012年(129)

分类: Java

2012-02-28 16:45:25

public class Date
extends implements , , <>

类 Date 表示特定的瞬间,精确到毫秒。

在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

  1. Date aDate = new Date(System.currentTimeMillis());

  2. Date aDate = new Date();

 现在,必须同时处理 Date 和 Calendar 才能设置部分 Date。但是一旦有了 Date 实例,就可以使用Calendar 获得并设置部分 Date。

  1. Date aDate = new Date(System.currentTimeMillis());
  2. Calendar calendar = GregorianCalendar.getInstance();
  3. calendar.setTime(aDate);

  4. calendar.set(Calendar.MONTH, Calendar.JULY);
  5. calendar.set(Calendar.DAY_OF_MONTH, 15);
  6. calendar.set(Calendar.YEAR, 1978);
  7. calendar.set(Calendar.HOUR, 2);
  8. calendar.set(Calendar.MINUTE, 15);
  9. calendar.set(Calendar.SECOND, 37);
  10. System.out.println(calendar.getTime());

  11. System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR));
  12. System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH));
  13. System.out.println("The DAY is: " + calendar.get(Calendar.DATE));
  14. System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR));
  15. System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE));
  16. System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND));
  17. System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM));
//输出:
Sat Jul 15 14:15:37 CST 1978
The YEAR is: 1978
The MONTH is: 6
The DAY is: 15
The HOUR is: 2
The MINUTE is: 15
The SECOND is: 37
The AM_PM indicator is: 1

        我们可以用 Calendar 类中指定的常数来引用这些字段。在某些情况下,同一字段会有一个以上的名称,比如Calendar.DAY_OF_MONTH,还可以用 Calendar.DATE 来引用它。除了可能是 Calendar.MONTH 的值和 Calendar.DATE 的值之外,其他的值都很简单。在 Java 语言的日期中,月份是基于 0 的(也就是说,1 月是 0),这使得使用指定的常数来设置月份值成为一种明智之举

格式化日期:

  • DateFormat
  • SimpleDateFormat
  • DateFormatSymbols
DateFormat 类允许我们创建特定于场所的格式化程序,如下所示:

  1. DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT);
  2. Date aDate = new Date();
  3. String formattedDate = dateFormatter.format(today); //输出Nov 11, 2005

还可以调用 DateFormat.getTimeInstance() 来格式化时间,或者调用 DateFormat.getDateTimeInstance() 将日期和时间一起格式化

样式

日期

时间

日期/时间

DEFAULT 

Nov 11, 2005

7:44:56 PM

Nov 11, 2005 7:44:56 PM

SHORT 

11/11/05

7:44 PM

11/11/05 7:44 PM

MEDIUM 

Nov 11, 2005

7:44:56 PM

Nov 11, 2005 7:44:56 PM

LONG 

November 11, 2005

7:44:56 PM EST

November 11, 2005 7:44:56 PM EST

FULL 

Thursday, November 11, 2005

7:44:56 PM EST

Thursday, November 11, 2005 7:44:56 PM EST

也可以使用 SimpleDateFormat 定义自己的格式。使用 SimpleDateFormat 非常简单:

  • 使用一个格式模式字符串(和一个地区,如果您希望的话)来实例化 SimpleDateFormat。
  • 使用 Date 在其上调用 format()。
  1. Date aDate = new Date();
  2. SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
  3. String formattedDate = formatter.format(today);
  4. System.out.println(formattedDate); //输出11/05/2005
如果 SimpleDateFormat 的标准符号仍然无法满足您定制格式化方面的需求,那么可以使用 DateFormatSymbols 定制用于任何 Date 或时间组件的符号。例如,可以实现惟一一组某年的月份的简写(使用与以前相同的 SimpleDateFormat),如下所示:

  1. DateFormatSymbols symbols = new DateFormatSymbols();
  2. String[] oddMonthAbbreviations = new String[] {
  3.     "Ja","Fe","Mh","Ap","My","Jn","Jy","Au","Se","Oc","No","De" };
  4. symbols.setShortMonths(oddMonthAbbreviations);

  5. formatter = new SimpleDateFormat("MMM dd, yyyy", symbols);
  6. formattedDate = formatter.format(now);
  7. System.out.println(formattedDate); //输出No 15, 2005

通过增大和减小日期值或部分日期值。有两种方法可以让您做到这一点:

  • add()
  • roll()
  1. Calendar calendar = GregorianCalendar.getInstance();
  2. calendar.set(Calendar.MONTH, 10);
  3. calendar.set(Calendar.DAY_OF_MONTH, 15);
  4. calendar.set(Calendar.YEAR, 2005);
  5. formatter = new SimpleDateFormat("MMM dd, yyyy");
  6. System.out.println("Before: " + formatter.format(calendar.getTime()));//输出Before: Nov 15, 2005    

  7. calendar.add(Calendar.DAY_OF_MONTH, 20);
  8. System.out.println("After: " + formatter.format(calendar.getTime())); //输出After: Dec 05, 2005
有两种格式的 roll():
  • roll(int field, boolean up)
  • roll(int field, int amount)

阅读(1255) | 评论(0) | 转发(0) |
0

上一篇:JAVA 集合框架 - 拾遗

下一篇:JAVA 泛型

给主人留下些什么吧!~~