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型的東西,用戶希望得到的往往是一個時間的字符串,比如“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 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 

三,設置時間
Calendar.getInstance().getTime()即可獲取一個Date對象

Calendar.getInstance().add(時間的一個部分,正數代表加,負數代表減)

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

void set(int field, int value) 
          將給定的日歷字段設置為給定值。
 void set(int year, int month, int date) 
          設置日歷字段 YEARMONTH 和 DAY_OF_MONTH 的值。
 void set(int year, int month, int date, int hourOfDay, int minute) 
          設置日歷字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAY 和 MINUTE 的值。
 void set(int year, int month, int date, int hourOfDay, int minute, int second) 
          設置字段 YEARMONTHDAY_OF_MONTHHOURMINUTE 和 SECOND 的值。

其中第一個就是給特定的字段設值,后面三個就是針對多個字段賦值

四,時間運算

時間的運算,無外乎就是加加減減,然后比較誰早誰晚而已,這些需求JAVA的API已經幫我們實現的很好了。一般比較時間的可以用如下的方法

abstract  void add(int field, int amount) 
          根據日歷的規則,為給定的日歷字段添加或減去指定的時間量。
 boolean after(Object when) 
          判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之后,返回判斷結果。
 boolean before(Object when) 
          判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結果。


第一個是給某個字段加上某個數量的時間,雖然這個方法名叫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包:

import java.util.Date;
import java.text.SimpleDateFormat;

然后:

定義日期格式: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.Date;
import java.util.Calendar;

import java.text.SimpleDateFormat;

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();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM