java date linux,Java中Date,SimpleDateFormat
一、Java中的日期概述:
日期在Java中是一塊非常復(fù)雜的內(nèi)容,對于一個日期在不同的語言國別環(huán)境中,日期的國際化,日期和時間之間的轉(zhuǎn)換,日期的加減運算,日期的展示格式都是非常復(fù)雜的問題。
在Java中,操作日期主要涉及到一下幾個類:
1、java.util.Date
類 Date 表示特定的瞬間,精確到毫秒。從 JDK 1.1 開始,應(yīng)該使用 Calendar 類實現(xiàn)日期和時間字段之間轉(zhuǎn)換,使用 DateFormat 類來格式化和分析日期字符串。Date 中的把日期解釋為年、月、日、小時、分鐘和秒值的方法已廢棄。
2、java.text.DateFormat(抽象類)
DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關(guān)的方式格式化并分析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進行格式化(也就是日期 -> 文本)、分析(文本-> 日期)和標(biāo)準(zhǔn)化。將日期表示為 Date 對象,或者表示為從 GMT(格林尼治標(biāo)準(zhǔn)時間)1970 年,1 月 1 日 00:00:00 這一刻開始的毫秒數(shù)。
3、java.text.SimpleDateFormat(DateFormat的直接子類)
SimpleDateFormat 是一個以與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類。它允許進行格式化(日期 -> 文本)、分析(文本 -> 日期)和規(guī)范化。
SimpleDateFormat 使得可以選擇任何用戶定義的日期-時間格式的模式。但是,仍然建議通過 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 來新的創(chuàng)建日期-時間格式化程序。
4、java.util.Calendar(抽象類)
Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
與其他語言環(huán)境敏感類一樣,Calendar 提供了一個類方法 getInstance,以獲得此類型的一個通用的對象。Calendar 的 getInstance 方法返回一個 Calendar 對象,其日歷字段已由當(dāng)前日期和時間初始化。
5、java.util.GregorianCalendar(Calendar的直接子類)
GregorianCalendar 是 Calendar 的一個具體子類,提供了世界上大多數(shù)國家使用的標(biāo)準(zhǔn)日歷系統(tǒng)。
GregorianCalendar 是一種混合日歷,在單一間斷性的支持下同時支持儒略歷和格里高利歷系統(tǒng),在默認(rèn)情況下,它對應(yīng)格里高利日歷創(chuàng)立時的格里高利歷日期(某些國家是在 1582 年 10 月 15 日創(chuàng)立,在其他國家要晚一些)。可由調(diào)用方通過調(diào)用 setGregorianChange() 來更改起始日期。
二、java.util.Date的使用:
類 java.util.Date 表示特定的瞬間,精確到毫秒。
1、java.util.Date的API簡介
Date()
分配 Date 對象并用當(dāng)前時間初始化此對象,以表示分配它的時間(精確到毫秒)。
Date(long date)
分配 Date 對象并初始化此對象,以表示自從標(biāo)準(zhǔn)基準(zhǔn)時間(稱為“歷元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數(shù)。
方法摘要
-------------
boolean after(Date when)
測試此日期是否在指定日期之后。
boolean before(Date when)
測試此日期是否在指定日期之前。
Object clone()
返回此對象的副本。
int compareTo(Date anotherDate)
比較兩個日期的順序。
boolean equals(Object obj)
比較兩個日期的相等性。
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數(shù)。
int hashCode()
返回此對象的哈希碼值。
void setTime(long time)
設(shè)置此 Date 對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的時間點。
String toString()
把此 Date 對象轉(zhuǎn)換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
dd 是一月中的某一天(01 至 31),顯示為兩位十進制數(shù)。
hh 是一天中的小時(00 至 23),顯示為兩位十進制數(shù)。
mm 是小時中的分鐘(00 至 59),顯示為兩位十進制數(shù)。
ss 是分鐘中的秒數(shù)(00 至 61),顯示為兩位十進制數(shù)。
zzz 是時區(qū)(并可以反映夏令時)。標(biāo)準(zhǔn)時區(qū)縮寫包括方法 parse 識別的時區(qū)縮寫。如果不提供時區(qū)信息,則 zzz 為空,即根本不包括任何字符。
yyyy 是年份,顯示為 4 位十進制數(shù)。
package dates;
import java.util.Date;
public class TestDate {
public static void main(String args[]) {
TestDate nowDate = new TestDate();
nowDate.getSystemCurrentTime();
nowDate.getCurrentDate();
}
public void getSystemCurrentTime() {
System.out.println("----獲取系統(tǒng)當(dāng)前時間----");
System.out.println("系統(tǒng)當(dāng)前時間 = " + System.currentTimeMillis());
}
public void getCurrentDate() {
System.out.println("----獲取系統(tǒng)當(dāng)前日期----");
//創(chuàng)建并初始化一個日期(初始值為當(dāng)前日期)
Date date = new Date();
System.out.println("現(xiàn)在的日期是 = " + date.toString());
System.out.println("自1970年1月1日0時0分0秒開始至今所經(jīng)歷的毫秒數(shù) = " + date.getTime());
}
}
2、java.text.SimpleDateFormat的使用:
SimpleDateFormat 是一個以與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類。它允許進行格式化(日期 -> 文本)、分析(文本 -> 日期)和規(guī)范化。
定義了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):
package dates;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class TestSimpleDateFormat {
public static void main(String args[]) throws ParseException {
TestSimpleDateFormat test = new TestSimpleDateFormat();
test.testDateFormat();
}
public void testDateFormat() throws ParseException {
//創(chuàng)建日期
Date date = new Date();
//創(chuàng)建不同的日期格式
DateFormat df1 = DateFormat.getInstance();
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
DateFormat df3 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);? ? //產(chǎn)生一個指定國家指定長度的日期格式,長度不同,顯示的日期完整性也不同
DateFormat df4 = new SimpleDateFormat("yyyy年MM月dd日 hh時mm分ss秒 EE", Locale.CHINA);
DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEEEE", Locale.US);
DateFormat df6 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df7 = new SimpleDateFormat("yyyy年MM月dd日");
//將日期按照不同格式進行輸出
System.out.println("-------將日期按照不同格式進行輸出------");
System.out.println("按照J(rèn)ava默認(rèn)的日期格式,默認(rèn)的區(qū)域? ? ? ? ? ? ? ? ? ? ? : " + df1.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE ,系統(tǒng)默認(rèn)區(qū)域? ? ? :" + df2.format(date));
System.out.println("按照日期的FULL模式,區(qū)域設(shè)置為中文? ? ? ? ? ? ? ? ? ? ? : " + df3.format(date));
System.out.println("按照指定格式 yyyy年MM月dd日 hh時mm分ss秒 EE ,區(qū)域為中文 : " + df4.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE ,區(qū)域為美國? ? ? ? : " + df5.format(date));
System.out.println("按照指定格式 yyyy-MM-dd ,系統(tǒng)默認(rèn)區(qū)域? ? ? ? ? ? ? ? ? : " + df6.format(date));
//將符合該格式的字符串轉(zhuǎn)換為日期,若格式不相配,則會出錯
Date date1 = df1.parse("07-11-30 下午2:32");
Date date2 = df2.parse("2007-11-30 02:51:07 星期五");
Date date3 = df3.parse("2007年11月30日 星期五");
Date date4 = df4.parse("2007年11月30日 02時51分18秒 星期五");
Date date5 = df5.parse("2007-11-30 02:51:18 Friday");
Date date6 = df6.parse("2007-11-30");
System.out.println("-------輸出將字符串轉(zhuǎn)換為日期的結(jié)果------");
System.out.println(date1);
System.out.println(date2);
System.out.println(date3);
System.out.println(date4);
System.out.println(date5);
System.out.println(date6);
}
}
總結(jié)
以上是生活随笔為你收集整理的java date linux,Java中Date,SimpleDateFormat的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12v20ah蓄电池正常放电多长时间
- 下一篇: 传送门骑士秋泉传送门在哪