JAVA_日期处理

来源:互联网 发布:软件开发流程图绘制 编辑:程序博客网 时间:2024/06/06 20:34

一.日期处理工具类简介

Java 提供了许多处理日期的工具!其中有一个叫做 Date 的类,这个类对创建和处理日期很有帮助。但是这个类,在支持同步方面表现不是很好,所以 Sun 添加了两个帮助改善这种情况的类: 

· Calendar  

· DateFormat   


1.Date类

创建 Date 比较容易: 
Date mDate = new Date(System.currentTimeMillis()); 
或者可以使用以下代码:
 
Date mDate = new Date(); 
这为我们提供一个表示当前确切日期和时间的 Date,并以当前地区格式显示。

既然有了一个实例,为什么不能处理它呢?坦率地说,它太小了。我们可以将一个 Date 与另一个日期进行比较,查看前一个日期是在后一个日的 before() 还是 after()。还可以通过调用 setTime() 将日期重新设置为一个新的时间瞬间,setTime() 带有一个 long 参数,该参数表示从 1970  1  1 日午夜起至现在过去了多少毫秒,这也正是 System.currentTimeMillis() 返回的值。
 


2.Calendar日历 
获得并设置部分 Date(比如,年、月,等等),须同时处理 Date  Calendar 才能设置部分 Date。有了 Date 实例,就可以使用 Calendar 获得并设置部分 Date。例如:

Date aDate = new Date(System.currentTimeMillis()); 
Calendar calendar = GregorianCalendar.getInstance(); 
calendar.setTime(aDate); 
在这里,我们创建了一个 GregorianCalendar,并将它的时间设置为以前创建的 Date。通过在 Calendar 上调用不同的方法,也能做到这一点:
 
Calendar calendar = GregorianCalendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 

通过 Calendar,可以访问和操作 Date 的组件。获得并设置部分 Date 也成为一个简单的过程。只需要在 Calendar 上调用适当的 getter  setter 即可,如下所示: 

calendar.set(Calendar.MONTH, Calendar.JULY); 
calendar.set(Calendar.DAY_OF_MONTH, 15); 
calendar.set(Calendar.YEAR, 1978); 
calendar.set(Calendar.HOUR, 2); 
calendar.set(Calendar.MINUTE, 15); 
calendar.set(Calendar.SECOND, 37); 
System.out.println(calendar.getTime()); 
这将输出 1987  7  15 日上午 2  15  37 秒的格式化后的输出字符串。(在 Calendar 上也有一些辅助方法,允许同时设置一些或几乎所有的组件。)这里调用的是 set(),它带有两个参数:

· 想要设置的 Date  field(或组件)。  
· 
该字段的值。
  
我们可以用 Calendar 类中指定的常数来引用这些字段。在某些情况下,同一字段会有一个以上的名称,比如 Calendar.DAY_OF_MONTH,还可以用 Calendar.DATE 来引用它。除了可能是 Calendar.MONTH 的值和 Calendar.DATE 的值之外,其他的值都很简单。在 Java 语言的日期中,月份是基于 0 的(也就是说,月是 0),这使得使用指定的常数来设置月份值成为一种明智之举,但也使得正确地显示日期成为令人沮丧的事。小时的数值是从 0  24
 
一旦有一个建立好的 Date,就可以提取其中的一部分。
 
System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR)); 
System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH)); 
System.out.println("The DAY is: " + calendar.get(Calendar.DATE)); 
System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR)); 
System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE)); 
System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND)); 
System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM)); 


3. 日期格式化

可以使用这几个类进行日期格式化: 
· DateFormat  
· SimpleDateFormat  
· DateFormatSymbols  


DateFormat

DateFormat 类允许我们创建特定于场所的格式化程序,如下所示: 
DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT); 
Date aDate = new Date(); 
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 


2.SimpleDateFormat定制格式化 
这些预定义的格式在大多数情况下表现良好,但是您也可以使用 SimpleDateFormat 定义自己的格式。使用 SimpleDateFormat 非常简单:

这些预定义的格式在大多数情况下表现良好,但是您也可以使用 SimpleDateFormat 定义自己的格式。使用 SimpleDateFormat 非常简单: 
· 
使用一个格式模式字符串(和一个地区,如果您希望的话)来实例化 SimpleDateFormat
  
· 
使用 Date 在其上调用 format()
  
结果是一个格式化了的日期字符串。以下是一个例子:
 
Date aDate = new Date(); 
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
String formattedDate = formatter.format(today); 
System.out.println(formattedDate); 
在运行该代码时,将获得以下类似结果(当然,它将影响运行代码时的当前日期):
 
11/05/2005 
在上述例子中,用引号括起来的字符串遵循了日期格式化模式的模式语法规则。Java.sun.com 中有一些那些规则的很好概括。以下是一些有用的经验法则:您可以指定日期和时间的模式。
 
· 
一些模式语法并不是由直觉得到的(例如,mm 定义了一个两位数的分钟模式;要获得简写的月份,可以使用 MM)。
 

· 通过将文本文字放入单括号中可以在模式中包含这




0 0