一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

java語(yǔ)言

Java 的日期時(shí)間

時(shí)間:2025-02-03 02:26:39 java語(yǔ)言 我要投稿

Java 的日期時(shí)間

  Java可以編寫(xiě)桌面應用程序、Web應用程序。那么大家知道Java 的日期時(shí)間是什么呢?下面一起來(lái)看看!

Java 的日期時(shí)間

  Java 日期時(shí)間

  java.util 包提供了 Date 類(lèi)來(lái)封裝當前的日期和時(shí)間。 Date 類(lèi)提供兩個(gè)構造函數來(lái)實(shí)例化 Date 對象。

  第一個(gè)構造函數使用當前日期和時(shí)間來(lái)初始化對象。

  Date( )

  第二個(gè)構造函數接收一個(gè)參數,該參數是從1970年1月1日起的毫秒數。

  Date(long millisec)

  Date對象創(chuàng )建以后,可以調用下面的方法。

序號方法和描述
1boolean after(Date date)
       若當調用此方法的Date對象在指定日期之后返回true,否則返回false。
2boolean before(Date date)
       若當調用此方法的Date對象在指定日期之前返回true,否則返回false。
3Object clone( )
       返回此對象的副本。
4int compareTo(Date date)
       比較當調用此方法的Date對象和指定日期。兩者相等時(shí)候返回0。調用對象在指定日期之前則返回負數。調用對象在指定日期之后則返回正數。
5int compareTo(Object obj)
       若obj是Date類(lèi)型則操作等同于compareTo(Date) 。否則它拋出ClassCastException。
6boolean equals(Object date)
       當調用此方法的Date對象和指定日期相等時(shí)候返回true,否則返回false。
7long getTime( )
       返回自 1970 年 1 月 1 日 00:00:00 GMT 以來(lái)此 Date 對象表示的毫秒數。
8int hashCode( )
        返回此對象的哈希碼值。
9void setTime(long time)
        
       用自1970年1月1日00:00:00 GMT以后time毫秒數設置時(shí)間和日期。
10String toString( )
       轉換Date對象為String表示形式,并返回該字符串。

  獲取當前日期時(shí)間

  Java中獲取當前日期和時(shí)間很簡(jiǎn)單,使用 Date 對象的 toString() 方法來(lái)打印當前日期和時(shí)間,如下所示:

  實(shí)例

  import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 對象 Date date = new Date(); // 使用 toString() 函數顯示日期時(shí)間 System.out.println(date.toString()); } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Mon May 04 09:51:52 CDT 2013

  日期比較

  Java使用以下三種方法來(lái)比較兩個(gè)日期:

  使用 getTime() 方法獲取兩個(gè)日期(自1970年1月1日經(jīng)歷的毫秒數值),然后比較這兩個(gè)值。

  使用方法 before(),after() 和 equals()。例如,一個(gè)月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。

  使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類(lèi)實(shí)現了這個(gè)接口。

  使用 SimpleDateFormat 格式化日期

  SimpleDateFormat 是一個(gè)以語(yǔ)言環(huán)境敏感的方式來(lái)格式化和分析日期的類(lèi)。SimpleDateFormat 允許你選擇任何用戶(hù)自定義日期時(shí)間格式來(lái)運行。例如:

  實(shí)例

  import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } }

  運行實(shí)例

  SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

  這一行代碼確立了轉換的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是時(shí)、分、秒。

  注意:有的格式大寫(xiě),有的格式小寫(xiě),例如 MM 是月份,mm 是分;HH 是 24 小時(shí)制,而 hh 是 12 小時(shí)制。

  以上實(shí)例編譯運行結果如下:

  Current Date: Sun 2014.07.18 at 14:14:09 PM PDT

  日期和時(shí)間的格式化編碼

  時(shí)間模式字符串用來(lái)指定時(shí)間格式。在此模式中,所有的 ASCII 字母被保留為模式字母,定義如下:

字母      描述      示例      
G紀元標記AD
y四位年份2001
M月份July or 07
d一個(gè)月的日期10
h A.M./P.M. (1~12)格式小時(shí)12
H一天中的小時(shí) (0~23)22
m分鐘數30
s秒數55
S毫秒數234
E星期幾Tuesday
D一年中的日子360
F一個(gè)月中第幾周的周幾2 (second Wed. in July)
w一年中第幾周40
W一個(gè)月中第幾周1
aA.M./P.M. 標記PM
k一天中的小時(shí)(1~24)24
K A.M./P.M. (0~11)格式小時(shí)10
z時(shí)區Eastern Standard Time
'文字定界符Delimiter
"單引號`

  使用printf格式化日期

  printf 方法可以很輕松地格式化時(shí)間和日期。使用兩個(gè)字母格式,它以 %t 開(kāi)頭并且以下面表格中的一個(gè)字母結尾。

轉  換  符


       

說(shuō)    明


       

示    例


       

c


       

包括全部日期和時(shí)間信息


       

星期六 十月 27 14:21:20 CST 2007


       

F


       

"年-月-日"格式


       

2007-10-27


       

D


       

"月/日/年"格式


       

10/27/07


       

r


       

"HH:MM:SS PM"格式(12時(shí)制)


       

02:25:51 下午


       

T


       

"HH:MM:SS"格式(24時(shí)制)


       

14:28:16


       

R


       

"HH:MM"格式(24時(shí)制)


       

14:28


       

  更多 printf 解析可以參見(jiàn):Java 格式化輸出 printf 例子

  實(shí)例

  實(shí)例

  import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 對象 Date date = new Date(); //c的使用 System.out.printf("全部日期和時(shí)間信息:%tc%n",date); //f的使用 System.out.printf("年-月-日格式:%tF%n",date); //d的使用 System.out.printf("月/日/年格式:%tD%n",date); //r的使用 System.out.printf("HH:MM:SS PM格式(12時(shí)制):%tr%n",date); //t的使用 System.out.printf("HH:MM:SS格式(24時(shí)制):%tT%n",date); //R的使用 System.out.printf("HH:MM格式(24時(shí)制):%tR",date); } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  全部日期和時(shí)間信息:星期一 九月 10 10:43:36 CST 2012

  年-月-日格式:2012-09-10

  月/日/年格式:09/10/12

  HH:MM:SS PM格式(12時(shí)制):10:43:36 上午

  HH:MM:SS格式(24時(shí)制):10:43:36

  HH:MM格式(24時(shí)制):10:43

  如果你需要重復提供日期,那么利用這種方式來(lái)格式化它的每一部分就有點(diǎn)復雜了。因此,可以利用一個(gè)格式化字符串指出要被格式化的參數的索引。

  索引必須緊跟在%后面,而且必須以$結束。例如:

  實(shí)例

  import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 對象 Date date = new Date(); // 使用toString()顯示日期和時(shí)間 System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Due date: February 09, 2014

  或者,你可以使用 < 標志。它表明先前被格式化的參數要被再次使用。例如:

  實(shí)例

  import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 對象 Date date = new Date(); // 顯示格式化時(shí)間 System.out.printf("%s %tB %<te, p="" }="" }<="" date);="" date:?,="" ?due="" %

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Due date: February 09, 2014

  定義日期格式的轉換符可以使日期通過(guò)指定的轉換符生成新字符串。這些日期轉換符如下所示:

  實(shí)例

  import java.util.*; public class DateDemo { public static void main(String args[]) { Date date=new Date(); //b的使用,月份簡(jiǎn)稱(chēng) String str=String.format(Locale.US,"英文月份簡(jiǎn)稱(chēng):%tb",date); System.out.println(str); System.out.printf("本地月份簡(jiǎn)稱(chēng):%tb%n",date); //B的使用,月份全稱(chēng) str=String.format(Locale.US,"英文月份全稱(chēng):%tB",date); System.out.println(str); System.out.printf("本地月份全稱(chēng):%tB%n",date); //a的使用,星期簡(jiǎn)稱(chēng) str=String.format(Locale.US,"英文星期的簡(jiǎn)稱(chēng):%ta",date); System.out.println(str); //A的使用,星期全稱(chēng) System.out.printf("本地星期的簡(jiǎn)稱(chēng):%tA%n",date); //C的使用,年前兩位 System.out.printf("年的前兩位數字(不足兩位前面補0):%tC%n",date); //y的使用,年后兩位 System.out.printf("年的后兩位數字(不足兩位前面補0):%ty%n",date); //j的使用,一年的天數 System.out.printf("一年中的天數(即年的第幾天):%tj%n",date); //m的使用,月份 System.out.printf("兩位數字的月份(不足兩位前面補0):%tm%n",date); //d的使用,日(二位,不夠補零) System.out.printf("兩位數字的日(不足兩位前面補0):%td%n",date); //e的使用,日(一位不補零) System.out.printf("月份的日(前面不補0):%te",date); } }

  輸出結果為:

  英文月份簡(jiǎn)稱(chēng):May

  本地月份簡(jiǎn)稱(chēng):五月

  英文月份全稱(chēng):May

  本地月份全稱(chēng):五月

  英文星期的簡(jiǎn)稱(chēng):Thu

  本地星期的簡(jiǎn)稱(chēng):星期四

  年的前兩位數字(不足兩位前面補0):20

  年的后兩位數字(不足兩位前面補0):17

  一年中的天數(即年的第幾天):124

  兩位數字的月份(不足兩位前面補0):05

  兩位數字的日(不足兩位前面補0):04

  月份的日(前面不補0):4

  解析字符串為時(shí)間

  SimpleDateFormat 類(lèi)有一些附加的方法,特別是parse(),它試圖按照給定的SimpleDateFormat 對象的格式化存儲來(lái)解析字符串。例如:

  實(shí)例

  import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  $ java DateDemo

  1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818

  $ java DateDemo 2007-12-01

  2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

  Java 休眠(sleep)

  sleep()使當前線(xiàn)程進(jìn)入停滯狀態(tài)(阻塞當前線(xiàn)程),讓出CPU的使用、目的是不讓當前線(xiàn)程獨自霸占該進(jìn)程所獲的CPU資源,以留一定時(shí)間給其他線(xiàn)程執行的機會(huì )。

  你可以讓程序休眠一毫秒的時(shí)間或者到您的計算機的壽命長(cháng)的任意段時(shí)間。例如,下面的程序會(huì )休眠3秒:

  實(shí)例

  import java.util.*; public class SleepDemo { public static void main(String args[]) { try { System.out.println(new Date( ) + " "); Thread.sleep(1000*3); // 休眠3秒 System.out.println(new Date( ) + " "); } catch (Exception e) { System.out.println("Got an exception!"); } } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Thu Sep 17 10:20:30 CST 2015

  Thu Sep 17 10:20:33 CST 2015

  測量時(shí)間

  下面的一個(gè)例子表明如何測量時(shí)間間隔(以毫秒為單位):

  實(shí)例

  import java.util.*; public class DiffDemo { public static void main(String args[]) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + " "); Thread.sleep(5*60*10); System.out.println(new Date( ) + " "); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Fri Jan 08 09:48:47 CST 2016

  Fri Jan 08 09:48:50 CST 2016

  Difference is : 3019

  Calendar類(lèi)

  我們現在已經(jīng)能夠格式化并創(chuàng )建一個(gè)日期對象了,但是我們如何才能設置和獲取日期數據的特定部分呢,比如說(shuō)小時(shí),日,或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類(lèi)。

  Calendar類(lèi)的功能要比Date類(lèi)強大很多,而且在實(shí)現方式上也比Date類(lèi)要復雜一些。

  Calendar類(lèi)是一個(gè)抽象類(lèi),在實(shí)際使用時(shí)實(shí)現特定的子類(lèi)的對象,創(chuàng )建對象的過(guò)程對程序員來(lái)說(shuō)是透明的,只需要使用getInstance方法創(chuàng )建即可。

  創(chuàng )建一個(gè)代表系統當前日期的Calendar對象

  Calendar c = Calendar.getInstance();//默認是當前日期

  創(chuàng )建一個(gè)指定日期的Calendar對象

  使用Calendar類(lèi)代表特定的時(shí)間,需要首先創(chuàng )建一個(gè)Calendar的對象,然后再設定該對象中的年月日參數來(lái)完成。

  //創(chuàng )建一個(gè)代表2009年6月12日的Calendar對象

  Calendar c1 = Calendar.getInstance();

  c1.set(2009, 6 - 1, 12);

  Calendar類(lèi)對象字段類(lèi)型

  Calendar類(lèi)中用一下這些常量表示不同的意義,jdk內的很多類(lèi)其實(shí)都是采用的這種思想

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期,和上面的字段意義完全相同
Calendar.HOUR12小時(shí)制的小時(shí)
Calendar.HOUR_OF_DAY24小時(shí)制的小時(shí)
Calendar.MINUTE分鐘
Calendar.SECOND
Calendar.DAY_OF_WEEK星期幾

  Calendar類(lèi)對象信息的設置

  Set設置

  如:

  Calendar c1 = Calendar.getInstance();

  調用:

  public final void set(int year,int month,int date)

  c1.set(2009, 6 - 1, 12);//把Calendar對象c1的年月日分別設這為:2009、6、12

  利用字段類(lèi)型設置

  如果只設定某個(gè)字段,例如日期的值,則可以使用如下set方法:

  public void set(int field,int value)

  把 c1對象代表的日期設置為10號,其它所有的數值會(huì )被重新計算

  c1.set(Calendar.DATE,10);

  把c1對象代表的年份設置為2008年,其他的所有數值會(huì )被重新計算

  c1.set(Calendar.YEAR,2008);

  其他字段屬性set的意義以此類(lèi)推

  Add設置

  Calendar c1 = Calendar.getInstance();

  把c1對象的日期加上10,也就是c1也就表示為10天后的日期,其它所有的數值會(huì )被重新計算

  c1.add(Calendar.DATE, 10);

  把c1對象的日期減去10,也就是c1也就表示為10天前的日期,其它所有的數值會(huì )被重新計算

  c1.add(Calendar.DATE, -10);

  其他字段屬性的add的意義以此類(lèi)推

  Calendar類(lèi)對象信息的獲得

  Calendar c1 = Calendar.getInstance(); // 獲得年份 int year = c1.get(Calendar.YEAR); // 獲得月份 int month = c1.get(Calendar.MONTH) + 1; // 獲得日期 int date = c1.get(Calendar.DATE); // 獲得小時(shí) int hour = c1.get(Calendar.HOUR_OF_DAY); // 獲得分鐘 int minute = c1.get(Calendar.MINUTE); // 獲得秒 int second = c1.get(Calendar.SECOND); // 獲得星期幾(注意(這個(gè)與Date類(lèi)是不同的):1代表星期日、2代表星期1、3代表星期二,以此類(lèi)推) int day = c1.get(Calendar.DAY_OF_WEEK);

  GregorianCalendar類(lèi)

  Calendar類(lèi)實(shí)現了公歷日歷,GregorianCalendar是Calendar類(lèi)的一個(gè)具體實(shí)現。

  Calendar 的getInstance()方法返回一個(gè)默認用當前的語(yǔ)言環(huán)境和時(shí)區初始化的GregorianCalendar對象。GregorianCalendar定義了兩個(gè)字段:AD和BC。這是代表公歷定義的兩個(gè)時(shí)代。

  下面列出GregorianCalendar對象的幾個(gè)構造方法:

序號      構造函數和說(shuō)明      
1GregorianCalendar() 
       在具有默認語(yǔ)言環(huán)境的默認時(shí)區內使用當前時(shí)間構造一個(gè)默認的 GregorianCalendar。
2GregorianCalendar(int year, int month, int date) 
       在具有默認語(yǔ)言環(huán)境的默認時(shí)區內構造一個(gè)帶有給定日期設置的 GregorianCalendar
3GregorianCalendar(int year, int month, int date, int hour, int minute) 
       為具有默認語(yǔ)言環(huán)境的默認時(shí)區構造一個(gè)具有給定日期和時(shí)間設置的 GregorianCalendar。
4GregorianCalendar(int year, int month, int date, int hour, int minute, int second) 
         為具有默認語(yǔ)言環(huán)境的默認時(shí)區構造一個(gè)具有給定日期和時(shí)間設置的 GregorianCalendar。
5GregorianCalendar(Locale aLocale) 
       在具有給定語(yǔ)言環(huán)境的默認時(shí)區內構造一個(gè)基于當前時(shí)間的 GregorianCalendar。
6GregorianCalendar(TimeZone zone) 
       在具有默認語(yǔ)言環(huán)境的給定時(shí)區內構造一個(gè)基于當前時(shí)間的 GregorianCalendar。
7GregorianCalendar(TimeZone zone, Locale aLocale) 
        在具有給定語(yǔ)言環(huán)境的給定時(shí)區內構造一個(gè)基于當前時(shí)間的 GregorianCalendar。

  這里是GregorianCalendar 類(lèi)提供的一些有用的方法列表:

序號      方法和說(shuō)明      
1void add(int field, int amount) 
       根據日歷規則,將指定的(有符號的)時(shí)間量添加到給定的日歷字段中。
2protected void computeFields() 
       轉換UTC毫秒值為時(shí)間域值
3protected void computeTime() 
       覆蓋Calendar ,轉換時(shí)間域值為UTC毫秒值
4boolean equals(Object obj) 
       比較此 GregorianCalendar 與指定的 Object。
5int get(int field) 
       獲取指定字段的時(shí)間值
6int getActualMaximum(int field) 
       返回當前日期,給定字段的最大值
7int getActualMinimum(int field) 
       返回當前日期,給定字段的最小值
8int getGreatestMinimum(int field) 
        返回此 GregorianCalendar 實(shí)例給定日歷字段的最高的最小值。
9Date getGregorianChange() 
       獲得格里高利歷的更改日期。
10int getLeastMaximum(int field) 
       返回此 GregorianCalendar 實(shí)例給定日歷字段的最低的最大值
11int getMaximum(int field) 
       返回此 GregorianCalendar 實(shí)例的給定日歷字段的最大值。
12Date getTime()
       獲取日歷當前時(shí)間。
13long getTimeInMillis() 
       獲取用長(cháng)整型表示的日歷的當前時(shí)間
14TimeZone getTimeZone() 
       獲取時(shí)區。
15int getMinimum(int field) 
       返回給定字段的最小值。
16int hashCode() 
       重寫(xiě)hashCode.
17boolean isLeapYear(int year)
       確定給定的年份是否為閏年。
18void roll(int field, boolean up) 
       在給定的時(shí)間字段上添加或減去(上/下)單個(gè)時(shí)間單元,不更改更大的字段。
19void set(int field, int value) 
       用給定的值設置時(shí)間字段。
20void set(int year, int month, int date) 
       設置年、月、日的值。
21void set(int year, int month, int date, int hour, int minute) 
       設置年、月、日、小時(shí)、分鐘的值。
22void set(int year, int month, int date, int hour, int minute, int second) 
       設置年、月、日、小時(shí)、分鐘、秒的值。
23void setGregorianChange(Date date) 
       設置 GregorianCalendar 的更改日期。
24void setTime(Date date) 
       用給定的日期設置Calendar的當前時(shí)間。
25void setTimeInMillis(long millis) 
       用給定的long型毫秒數設置Calendar的當前時(shí)間。
26void setTimeZone(TimeZone value) 
       用給定時(shí)區值設置當前時(shí)區。
27String toString() 
       返回代表日歷的字符串。

  實(shí)例

  實(shí)例

  import java.util.*; public class GregorianCalendarDemo { public static void main(String args[]) { String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; // 初始化 Gregorian 日歷 // 使用當前時(shí)間和日期 // 默認為本地時(shí)間和時(shí)區 GregorianCalendar gcalendar = new GregorianCalendar(); // 顯示當前時(shí)間和日期的信息 System.out.print("Date: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Time: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // 測試當前年份是否為閏年 if(gcalendar.isLeapYear(year)) { System.out.println("當前年份是閏年"); } else { System.out.println("當前年份不是閏年"); } } }

  運行實(shí)例

  以上實(shí)例編譯運行結果如下:

  Date: Apr 22 2009

  Time: 11:25:27

  當前年份不是閏年

【Java 的日期時(shí)間】相關(guān)文章:

Java面試試題日期和時(shí)間10-15

java日期時(shí)間基本操作方法08-08

java學(xué)習之日期的運算代碼06-05

關(guān)于PHP的日期與時(shí)間08-19

Java中日期與字符串的處理08-16

php日期轉時(shí)間戳 指定日期轉換成時(shí)間戳09-26

PHP時(shí)間和日期函數詳解10-17

php時(shí)間戳與日期的轉換08-02

php的date()日期時(shí)間函數詳解11-12

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看