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型的東西,使用者希望得到的往往是一個時間的字元串,比如“2006年6月18号”,或“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把目前時間格式化為一個如下格式的時間字元串“XXXX年XX月XX日_XX時XX分XX秒”,代碼:
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
M
Month in year
Month
w
Week in year
Number
W
Week in month
D
Day in year
d
Day in month
F
Day of week in month
E
Day in week
a
Am/pm marker
Text
H
Hour in day (0-23)
k
Hour in day (1-24)
K
Hour in am/pm (0-11)
h
Hour in am/pm (1-12)
m
Minute in hour
s
Second in minute
S
Millisecond
Number
z
Time zone
General time zone
Z
Time zone
RFC 822 time zone
三,設定時間
Calendar.getInstance().getTime()即可擷取一個Date對象
Calendar.getInstance().add(時間的一個部分,正數代表加,負數代表減)
現在設定時間,推薦 使用java.util.Calendar類來進行操作,因為java.util.Date類很多方法都過時了,
Calendar 類有很多重載的設定時間的方法
我們可以針對于某一項進行設定,也可以同時進行很多設定
<code>void</code>
将給定的月曆字段設定為給定值。
<code> void</code>
設定月曆字段 <code>YEAR</code>、<code>MONTH</code> 和 <code>DAY_OF_MONTH</code> 的值。
設定月曆字段 <code>YEAR</code>、<code>MONTH</code>、<code>DAY_OF_MONTH</code>、<code>HOUR_OF_DAY</code> 和 <code>MINUTE</code> 的值。
設定字段 <code>YEAR</code>、<code>MONTH</code>、<code>DAY_OF_MONTH</code>、<code>HOUR</code>、<code>MINUTE</code> 和 <code>SECOND</code> 的值。
其中第一個就是給特定的字段設值,後面三個就是針對多個字段指派
四,時間運算
時間的運算,無外乎就是加加減減,然後比較誰早誰晚而已,這些需求JAVA的API已經幫我們實作的很好了。一般比較時間的可以用如下的方法
<code>abstract void</code>
根據月曆的規則,為給定的月曆字段添加或減去指定的時間量。
<code> boolean</code>
判斷此 <code>Calendar</code> 表示的時間是否在指定 <code>Object</code> 表示的時間之後,傳回判斷結果。
判斷此 <code>Calendar</code> 表示的時間是否在指定 <code>Object</code> 表示的時間之前,傳回判斷結果。
第一個是給某個字段加上某個數量的時間,雖然這個方法名叫add ,我們要減也是調用它的,隻不過我們傳入的是負數。
其實JAVA對時間操作的支援還是挺豐富的。希望大家的日常的使用中有更多的發現。
http://www.blogjava.net/hadeslee/archive/2007/09/11/144386.html
一. 擷取目前系統時間和日期并格式化輸出:
import java.util.Date;
import java.text.SimpleDateFormat;
public class NowString {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式
System.out.println(df.format(new Date()));// new Date()為擷取目前系統時間
}
二. 在資料庫裡的日期隻以年-月-日的方式輸出,可以用下面兩種方法:
1、用convert()轉化函數:
String sqlst = "select convert(varchar(10),bookDate,126) as convertBookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";
System.out.println(rs.getString("convertBookDate"));
2、利用SimpleDateFormat類:
先要輸入兩個java包:
然後:
定義日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);
sql語句為:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";
輸出:
System.out.println(df.format(rs.getDate("bookDate")));
************************************************************
java中擷取目前日期和時間的方法
import java.util.Calendar;
public class TestDate{
public static void main(String[] args){
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//可以友善地修改日期格式
String hehe = dateFormat.format( now );
System.out.println(hehe);
Calendar c = Calendar.getInstance();//可以對每個時間域單獨修改
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second);
有時候要把String類型的時間轉換為Date類型,通過以下的方式,就可以将你剛得到的時間字元串轉換為Date類型了。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date time=null;
try {
time= sdf.parse(sdf.format(new Date()));
} catch (ParseException e) {
e.printStackTrace();