中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java入門-語言基礎(chǔ)-17.日期時(shí)間

原文地址:http://www.work100.net/training/java-date-time.html
更多教程:光束云 - 免費(fèi)課程

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出五華免費(fèi)做網(wǎng)站回饋大家。

日期時(shí)間

序號(hào)文內(nèi)章節(jié)視頻
1 概述 -
2 獲取當(dāng)前日期時(shí)間 -
3 日期比較
4 使用SimpleDateFormat格式化日期 -
5 日期和時(shí)間的格式化編碼 -
6 使用printf格式化日期 -
7 解析字符串為時(shí)間 -
8 Java休眠(sleep) -
9 測量時(shí)間 -
10 Calendar類 -
11 GregorianCalendar類 -

請參照如上章節(jié)導(dǎo)航進(jìn)行閱讀

1.概述

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

第一個(gè)構(gòu)造函數(shù)使用當(dāng)前日期和時(shí)間來初始化對象。

Date( )

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

Date(long millisec)

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

序號(hào)方法和描述
1 boolean after(Date date)<br>若當(dāng)調(diào)用此方法的 Date 對象在指定日期之后返回 true,否則返回 false。
2 boolean before(Date date) <br>若當(dāng)調(diào)用此方法的 Date 對象在指定日期之前返回 true,否則返回 false
3 Object clone( ) <br>返回此對象的副本。
4 int compareTo(Date date)<br>比較當(dāng)調(diào)用此方法的Date對象和指定日期。兩者相等時(shí)候返回0。<br>調(diào)用對象在指定日期之前則返回負(fù)數(shù)。調(diào)用對象在指定日期之后則返回正數(shù)。
5 int compareTo(Object obj) <br>若obj是Date類型則操作等同于 compareTo(Date) 。否則它拋出 ClassCastException
6 boolean equals(Object date) <br>當(dāng)調(diào)用此方法的Date對象和指定日期相等時(shí)候返回 true,否則返回 false。
7 long getTime( ) <br>返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數(shù)。
8 int hashCode( ) <br> 返回此對象的哈希碼值。
9 void setTime(long time) <br>用自 1970年1月1日00:00:00 GMT 以后time毫秒數(shù)設(shè)置時(shí)間和日期。
10 String toString( ) <br>把此 Date 對象轉(zhuǎn)換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy <br>其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

2.獲取當(dāng)前日期時(shí)間

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

import java.util.Date;

public class DateDemo {
   public static void main(String[] args) {
       // 初始化 Date 對象
       Date date = new Date();

       // 使用 toString() 函數(shù)顯示日期時(shí)間
       System.out.println(date.toString());
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Mon May 04 09:51:52 CDT 2019

3.日期比較

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

  • 使用 getTime() 方法獲取兩個(gè)日期(自 1970年1月1日 經(jīng)歷的毫秒數(shù)值),然后比較這兩個(gè)值
  • 使用方法 before(),after()equals()。例如,一個(gè)月的12號(hào)比18號(hào)早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回 true
  • 使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實(shí)現(xiàn)了這個(gè)接口

4.使用SimpleDateFormat格式化日期

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

例如:

import  java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String[] args) {

      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

      System.out.println("當(dāng)前時(shí)間為: " + ft.format(dNow));
   }
}
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

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

注意: 有的格式大寫,有的格式小寫,例如 MM 是月份,mm 是分;HH24 小時(shí)制,而 hh12 小時(shí)制。

以上實(shí)例編譯運(yùn)行結(jié)果如下:

當(dāng)前時(shí)間為: 2019-12-06 10:16:34

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

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

字母描述示例
G 紀(jì)元標(biāo)記 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 分鐘數(shù) 30
s 秒數(shù) 55
S 毫秒數(shù) 234
E 星期幾 Tuesday
D 一年中的日子 360
F 一個(gè)月中第幾周的周幾 2 (second Wed. in July)
w 一年中第幾周 40
W 一個(gè)月中第幾周 1
a A.M./P.M. 標(biāo)記 PM
k 一天中的小時(shí)(1~24) 24
K A.M./P.M. (0~11)格式小時(shí) 10
z 時(shí)區(qū) Eastern Standard Time
\' 文字定界符 Delimiter
\" 單引號(hào) `

6.使用printf格式化日期

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

轉(zhuǎn)換符說明示例
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
實(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í)例編譯運(yùn)行結(jié)果如下:

全部日期和時(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  

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

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

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í)例編譯運(yùn)行結(jié)果如下:

Due date: February 09, 2014

或者,你可以使用 &lt; 標(biāo)志。它表明先前被格式化的參數(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, %<tY", 
                         "Due date:", date);
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Due date: February 09, 2019

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

import java.util.*;

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

輸出結(jié)果為:

英文月份簡稱:May
本地月份簡稱:五月
英文月份全稱:May
本地月份全稱:五月
英文星期的簡稱:Thu
本地星期的簡稱:星期四
年的前兩位數(shù)字(不足兩位前面補(bǔ)0):20
年的后兩位數(shù)字(不足兩位前面補(bǔ)0):17
一年中的天數(shù)(即年的第幾天):124
兩位數(shù)字的月份(不足兩位前面補(bǔ)0):05
兩位數(shù)字的日(不足兩位前面補(bǔ)0):04
月份的日(前面不補(bǔ)0):4

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

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

例如:

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í)例編譯運(yùn)行結(jié)果如下:

$ 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

8.Java休眠(sleep)

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

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

import java.util.*;

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

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Thu Sep 17 10:20:30 CST 2019

Thu Sep 17 10:20:33 CST 2019

9.測量時(shí)間

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

import java.util.*;

public class DiffDemo {

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

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

10.Calendar類

我們現(xiàn)在已經(jīng)能夠格式化并創(chuàng)建一個(gè)日期對象了,但是我們?nèi)绾尾拍茉O(shè)置和獲取日期數(shù)據(jù)的特定部分呢,比如說小時(shí),日,或者分鐘?

我們又如何在日期的這些部分加上或者減去值呢? 答案是使用 Calendar 類。

Calendar 類的功能要比 Date 類強(qiáng)大很多,而且在實(shí)現(xiàn)方式上也比 Date 類要復(fù)雜一些。

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

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

Calendar c = Calendar.getInstance();//默認(rèn)是當(dāng)前日期

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

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

//創(chuàng)建一個(gè)代表2009年6月12日的Calendar對象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Calendar類對象字段類型

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

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

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

Set設(shè)置

如:

Calendar c1 = Calendar.getInstance();

調(diào)用:

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

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

利用字段類型設(shè)置

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

public void set(int field,int value)

c1 對象代表的日期設(shè)置為 10 號(hào),其它所有的數(shù)值會(huì)被重新計(jì)算

c1.set(Calendar.DATE,10);

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

c1.set(Calendar.YEAR,2008);

其他字段屬性 set 的意義以此類推

Add設(shè)置
Calendar c1 = Calendar.getInstance();

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

c1.add(Calendar.DATE, 10);

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

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

其他字段屬性的 add 的意義以此類推

Calendar類對象信息的獲得

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類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);

11.GregorianCalendar類

Calendar 類實(shí)現(xiàn)了公歷日歷,GregorianCalendarCalendar 類的一個(gè)具體實(shí)現(xiàn)。

CalendargetInstance() 方法返回一個(gè)默認(rèn)用當(dāng)前的語言環(huán)境和時(shí)區(qū)初始化的 GregorianCalendar 對象。GregorianCalendar 定義了兩個(gè)字段:ADBC。這是代表公歷定義的兩個(gè)時(shí)代。

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

序號(hào)構(gòu)造函數(shù)和說明
1 GregorianCalendar() <br>在具有默認(rèn)語言環(huán)境的默認(rèn)時(shí)區(qū)內(nèi)使用當(dāng)前時(shí)間構(gòu)造一個(gè)默認(rèn)的 GregorianCalendar。
2 GregorianCalendar(int year, int month, int date) <br>在具有默認(rèn)語言環(huán)境的默認(rèn)時(shí)區(qū)內(nèi)構(gòu)造一個(gè)帶有給定日期設(shè)置的 GregorianCalendar
3 GregorianCalendar(int year, int month, int date, int hour, int minute) <br>為具有默認(rèn)語言環(huán)境的默認(rèn)時(shí)區(qū)構(gòu)造一個(gè)具有給定日期和時(shí)間設(shè)置的 GregorianCalendar。
4 GregorianCalendar(int year, int month, int date, int hour, int minute, int second) <br> 為具有默認(rèn)語言環(huán)境的默認(rèn)時(shí)區(qū)構(gòu)造一個(gè)具有給定日期和時(shí)間設(shè)置的 GregorianCalendar
5 GregorianCalendar(Locale aLocale) <br>在具有給定語言環(huán)境的默認(rèn)時(shí)區(qū)內(nèi)構(gòu)造一個(gè)基于當(dāng)前時(shí)間的 GregorianCalendar。
6 GregorianCalendar(TimeZone zone) <br>在具有默認(rèn)語言環(huán)境的給定時(shí)區(qū)內(nèi)構(gòu)造一個(gè)基于當(dāng)前時(shí)間的 GregorianCalendar
7 GregorianCalendar(TimeZone zone, Locale aLocale) <br> 在具有給定語言環(huán)境的給定時(shí)區(qū)內(nèi)構(gòu)造一個(gè)基于當(dāng)前時(shí)間的 GregorianCalendar。

這里是 GregorianCalendar 類提供的一些有用的方法列表:

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

      // 測試當(dāng)前年份是否為閏年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("當(dāng)前年份是閏年");
      }
      else {
         System.out.println("當(dāng)前年份不是閏年");
      }
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Date: Apr 22 2009
Time: 11:25:27
當(dāng)前年份不是閏年
練習(xí)

Calender 的月份是從 0 開始的,但日期和年份是從 1 開始的

示例代碼:

import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
            Calendar c1 = Calendar.getInstance();
            c1.set(2017, 1, 1);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
            c1.set(2017, 1, 0);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
    }
}

運(yùn)行結(jié)果:

2017-1-1
2017-0-31

可見,將日期設(shè)為0以后,月份變成了上個(gè)月,但月份可以為0

把月份改為2試試:

import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
            Calendar c1 = Calendar.getInstance();
            c1.set(2017, 2, 1);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
            c1.set(2017, 2, 0);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
    }
}

運(yùn)行結(jié)果:

2017-2-1
2017-1-28

可以看到上個(gè)月的最后一天是28號(hào),所以 Calendar.MONTH 為1的時(shí)候是2月

既然日期設(shè)為0表示上個(gè)月的最后一天,那是不是可以設(shè)為負(fù)數(shù)呢?

import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
            Calendar c1 = Calendar.getInstance();
            c1.set(2017, 2, 1);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
            c1.set(2017, 2, -10);
            System.out.println(c1.get(Calendar.YEAR)
                    +"-"+c1.get(Calendar.MONTH)
                    +"-"+c1.get(Calendar.DATE));
    }
}

運(yùn)行結(jié)果:

2017-2-1
2017-1-18

果然可以,所以日期才可以自由加減。

月份也可以是負(fù)數(shù),規(guī)則與日期一樣,就不上代碼了。

實(shí)測將年份設(shè)為非正數(shù)時(shí),會(huì)自動(dòng)變?yōu)?絕對值+1,不知其意義。


上一篇:StringBuffer
下一篇:日期時(shí)間

網(wǎng)頁名稱:Java入門-語言基礎(chǔ)-17.日期時(shí)間
網(wǎng)頁地址:http://www.rwnh.cn/article30/gopiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、定制開發(fā)、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、網(wǎng)站改版、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
增城市| 永平县| 京山县| 巴东县| 玉环县| 呼和浩特市| 乌鲁木齐县| 桃园市| 江永县| 南通市| 贺兰县| 文成县| 甘孜县| 旬阳县| 玉田县| 江华| 全椒县| 水城县| 金山区| 永福县| 黎城县| 开平市| 六安市| 栾城县| 长宁县| 新邵县| 青冈县| 东城区| 平邑县| 祁东县| 景泰县| 昭觉县| 宝清县| 南溪县| 广灵县| 万宁市| 正蓝旗| 南充市| 康保县| 图们市| 惠来县|