Date 類從Java 開發包(JDK)
就開始進化
當時它只包含了幾個取得或者設置一個日期數據的各個部分的方法
比如說月
日
和年
這些方法現在遭到了批評並且已經被轉移到了Calendar類裡去了
我們將在本文中進一步討論它
這種改進旨在更好的處理日期數據的國際化格式
就象在JDK
中一樣
Date 類實際上只是一個包裹類
它包含的是一個長整型數據
表示的是從GMT(格林尼治標准時間)
年
月
日
:
:
這一刻之前或者是之後經歷的毫秒數
創建一個日期對象 讓我們看一個使用系統的當前日期和時間創建一個日期對象並返回一個長整數的簡單例子
這個時間通常被稱為Java 虛擬機(JVM)主機環境的系統時間
import java
util
Date;
public class DateExample
{
public static void main(String[] args) { //自己替換[]
// Get the system date/time
Date date = new Date();
System
out
println(date
getTime());
}
}
在星期六
年
月
日
下午大約是
:
的樣子
上面的例子在系統輸出設備上顯示的結果是
在這個例子中
值得注意的是我們使用了Date 構造函數創建一個日期對象
這個構造函數沒有接受任何參數
而這個構造函數在內部使用了System
currentTimeMillis() 方法來從系統獲取日期
那麼
現在我們已經知道了如何獲取從
年
月
日開始經歷的毫秒數了
我們如何才能以一種用戶明白的格式來顯示這個日期呢? 在這裡類java
text
SimpleDateFormat 和它的抽象基類 java
text
DateFormat 就派得上用場了
日期數據的定制格式 假如我們希望定制日期數據的格式
比方星期六
月
日
年
下面的例子展示了如何完成這個工作:
import java
text
SimpleDateFormat;
import java
util
Date;
public class DateExample
{
public static void main(String[] args) { //自己替換[]
SimpleDateFormat bartDateFormat =
new SimpleDateFormat(
EEEE
MMMM
dd
yyyy
);
Date date = new Date();
System
out
println(bartDateFormat
format(date));
}
}
只要通過向SimpleDateFormat 的構造函數傳遞格式字符串
EEE
MMMM
dd
yyyy
我們就能夠指明自己想要的格式
你應該可以看見
格式字符串中的ASCII 字符告訴格式化函數下面顯示日期數據的哪一個部分
EEEE是星期
MMMM是月
dd是日
yyyy是年
字符的個數決定了日期是如何格式化的
傳遞
EE
MM
dd
yy
會顯示 Sat
請察看Sun 公司的Web 站點獲取日期格式化選項的完整的指示
將文本數據解析成日期對象 假設我們有一個文本字符串包含了一個格式化了的日期對象
而我們希望解析這個字符串並從文本日期數據創建一個日期對象
我們將再次以格式化字符串
MM
dd
yyyy
調用SimpleDateFormat類
但是這一次
我們使用格式化解析而不是生成一個文本日期數據
我們的例子
顯示在下面
將解析文本字符串
並創建一個值為
的日期對象
例子程序:
import java
text
SimpleDateFormat;
import java
util
Date;
public class DateExample
{
public static void main(String[]args) { //自己替換[]
// Create a date formatter that can parse dates of
// the form MM
dd
yyyy
SimpleDateFormat bartDateFormat =
new SimpleDateFormat(
MM
dd
yyyy
);
// Create a string containing a text date to be parsed
String dateStringToParse =
;
try {
// Parse the text version of the date
// We have to perform the parse method in a
// try
catch construct in case dateStringToParse
// does not contain a date in the format we are expecting
Date date = bartDateFormat
parse(dateStringToParse);
// Now send the parsed date as a long value
// to the system output
System
out
println(date
getTime());
}
catch (Exception ex) {
System
out
println(ex
getMessage());
}
}
}
使用標准的日期格式化過程 既然我們已經可以生成和解析定制的日期格式了
讓我們來看一看如何使用內建的格式化過程
方法 DateFormat
getDateTimeInstance() 讓我們得以用幾種不同的方法獲得標准的日期格式化過程
在下面的例子中
我們獲取了四個內建的日期格式化過程
它們包括一個短的
中等的
長的
和完整的日期格式
import java
text
DateFormat;
import java
util
Date;
public class DateExample
{
public static void main(String[] args) { //自己替換[]
Date date = new Date();
DateFormat shortDateFormat =
DateFormat
getDateTimeInstance(
DateFormat
SHORT
DateFormat
SHORT);
DateFormat mediumDateFormat =
DateFormat
getDateTimeInstance(
DateFormat
MEDIUM
DateFormat
MEDIUM);
DateFormat longDateFormat =
DateFormat
getDateTimeInstance(
DateFormat
LONG
DateFormat
LONG);
DateFormat fullDateFormat =
DateFormat
getDateTimeInstance(
DateFormat
FULL
DateFormat
FULL);
System
out
println(shortDateFormat
format(date));
System
out
println(mediumDateFormat
format(date));
System
out
println(longDateFormat
format(date));
System
out
println(fullDateFormat
format(date));
}
}
注意我們在對 getDateTimeInstance的每次調用中都傳遞了兩個值
第一個參數是日期風格
而第二個參數是時間風格
它們都是基本數據類型int(整型)
考慮到可讀性
我們使用了DateFormat 類提供的常量: SHORT
MEDIUM
LONG
和 FULL
要知道獲取時間和日期格式化過程的更多的方法和選項
請看Sun 公司Web 站點上的解釋
運行我們的例子程序的時候
它將向標准輸出設備輸出下面的內容:
/
/
:
PM
Sep
:
:
PM
September
:
:
PM EDT
Saturday
September
:
:
PM EDT
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19216.html