java中的時間操作——基礎

java中的時間操作

java中的時間操作不外乎這四種情況:

1、獲取當前時間

2、獲取某個時間的某種格式

3、設置時間

4、時間的運算

好,下面就針對這四種情況,一個一個搞定。

 

一、獲取當前時間

 

有兩種方式可以獲得,第一種,使用Date類。

j2SE的包裏有兩個Date類,一個是java.sql.Date,一個是java.util.Date

這裏,要使用java.util.Date。獲取當前時間的代碼如下

Date date = new Date();

date.getTime();

還有一種方式,使用System.currentTimeMillis();

 

這兩種方式獲得的結果是一樣的,都是得到一個當前的時間的long型的時間的毫秒值,這個值實際上是當前時間值與1970年一月一號零時零分零秒相差的毫秒數。

當前的時間得到了,但實際的應用中最後往往不是要用這個long型的東西,用戶希望得到的往往是一個時間的字符串,比如“2006618號”,或“2006-06-18”,老外可能希望得到的是“06-18-2006”,諸如此類等等。這就是下一個要解決的問題

 

二、獲取某個時間的某種格式

 

獲取時間的格式,需要用到一個專門用於時間格式的類java.text.SimpleDateFormat

首先,定義一個SimpleDateFormat變量

SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);

這個構造函數的定義如下:

SimpleDateFormat(String pattern, Locale locale)

第一個參數pattern,我們後面再解釋,這裏我們使用一個"",第二個參數,是用來設置時區的,這裏用到了java.util.Locale這個類,這個類了面定義了很多靜態變量,直接拿過來用就OK,我們把時區設置爲Locale.SIMPLIFIED_CHINESE,只看名字,這個靜態變量的意義已經很清楚了。

 

接下來我們使用這個SimpleDateFormat把當前時間格式化爲一個如下格式的時間字符串“XXXXXXXX_XXXXXX秒”,代碼:

sdf.applyPattern("yyyy年MM月dd日_HH時mm分ss秒");

String timeStr = sdf.format(new Date());

 

獲取時間格式的函數是format,這個函數的參數是java.util.Date對象,這個沒有什麼花頭。

要說明一下的是這個pattern,所謂的模式。這裏,yyyy,MM,dd等,這就是模式。

我們可以在SimpleDateFormat的構造函數中指定模式,比如

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE);

也可以獲取時間格式的時候使用applyPattern函數臨時指定,上面的例子就是這樣。

什麼字符代表什麼,這是j2se約定好的,設置模式的時候,我們可以使用約定好的字符加上任何我們想要的字符串。

j2se對字符所代表的模式的約定列表如下:

 

 

Letter Date or Time Component Presentation
G Era designator Text
y Year Year
M Month in year Month
w Week in year Number
W Week in month Number
D Day in year Number
d Day in month Number
F Day of week in month Number
E Day in week Text
a Am/pm marker Text 
H Hour in day (0-23) Number
k Hour in day (1-24) Number
K Hour in am/pm (0-11)  Number
h   Hour in am/pm (1-12)  Number
m   Minute in hour  Number
s   Second in minute  Number
S   Millisecond  Number  
z   Time zone   General time zone 
Z   Time zone  RFC 822 time zone 

三,設置時間

現在設置時間,推薦 使用java.util.Calendar類來進行操作,因爲java.util.Date類很多方法都過時了,
Calendar 類有很多重載的設置時間的方法
我們可以針對於某一項進行設置,也可以同時進行很多設置

void set(int field, int value)
          將給定的日曆字段設置爲給定值。
 void set(int year, int month, int date)
          設置日曆字段 YEARMONTHDAY_OF_MONTH 的值。
 void set(int year, int month, int date, int hourOfDay, int minute)
          設置日曆字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。
 void set(int year, int month, int date, int hourOfDay, int minute, int second)
          設置字段 YEARMONTHDAY_OF_MONTHHOURMINUTESECOND 的值。
其中第一個就是給特定的字段設值,後面三個就是針對多個字段賦值

四,時間運算

時間的運算,無外乎就是加加減減,然後比較誰早誰晚而已,這些需求JAVA的API已經幫我們實現的很好了。一般比較時間的可以用如下的方法
abstract  void add(int field, int amount)
          根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。
 boolean after(Object when)
          判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之後,返回判斷結果。
 boolean before(Object when)
          判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結果。

第一個是給某個字段加上某個數量的時間,雖然這個方法名叫add ,我們要減也是調用它的,只不過我們傳入的是負數。

其實JAVA對時間操作的支持還是挺豐富的。希望大家的日常的使用中有更多的發現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章