datetime、timestamp、date、datetime、Calendar(Java)


datetime

   1.允許為空值、可以自定義值,系統不會自動修改其值。

   2.不可以設定默認值,所以在不允許為空值的情況下,所以手動指定datetime字段的值才能成功插入數據。

   3.雖然不可以設定默認值,但是可以指定datetime字段的值的時候使用now()變量來自動插入系統的當前時間。

   顯示格式 YYYY-MM-DD HH:mm:ss 顯示范圍 1601-01-01 到 9999-01-01 (sql)

    end:datetime類型適合用來記錄數據的原始的創建時間,因為無論你怎么更改記錄中其他字段的值,datetime字段的值都不會改變,除非你手動更改它。

timestamp

  1.允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。

  2.默認值為CURRENT_TIMESTAMO(),其實也就是當前的系統時間。

  3.數據庫會自動修改其值,所以在插入記錄時不需要指定timestamp字段的名稱和timestamp字段的值,你只需要在設計表的時候添加一個timestamp字段即可,對應的記錄timestamp值 會自動更新為當前的系統時間。

  顯示格式 YYYY-MM-DD HH:mm:ss 顯示范圍 1601-01-01 00:00:00 到 9999-12-31 23:59:59 (sql)

   end:timestamp類型適合記錄數據的最后修改時間,因為只要你更改了記錄中的其他字段的值,timestamp字段的值都會自動更新

date

   顯示格式 YYYY-MM-DD 顯示范圍 1601-01-01 00:00:00 到 9999-12-31 23:59:59 (sql)

time:

    顯示格式 HH:mm:ss 顯示范圍 00:00:00 到  23:59:59 (sql)

 calendar

   在處理日期和時間時,系統推薦使用Calendar進行實現。再設計上,Calendar類的功能要比Date類強大很多,而且在實現方式上也比Date類要復雜一點。

   Calednar類時抽象類,且Calendar類的構造方法時protected的,所以無法使用Calendar類的構造方法來創建對象,API提供了getInstance方法用來創建對象。

   使用該方法獲取的Calendar對象就代表當前的系統時間,由於Calendar類tostring實現的沒有Date類那么直觀,所以直接輸出Calendar類的對象意義不大。

   Calendar c1=Calendar.getInstance();

   c1.set(2019,12-1,21);

   使用Calendar類代表特定的時間,首先需要創建一個Calendar的對象,然后再誰都能該對象中的年月日參數來完成。

    以上示例設置的時間為2019年12月21日。其參數的結構和Date類不一樣,Calendar類中的年份的數值直接書寫,月份的值為實際的月份減1,日期的值是實際日期的值。

    Calendar.YEAR:年份、Calendar.MONTH:月份、Calendar.DATE:日期

    Calendar.DAY_OF_MONTH:日期,和上面的字段完全相同、Calendar.HOUR:12小時制的小時數、Calendar.HOUR_OF_DAY:24小時制的小時數

    Calendar.MINUTE:分鍾、Calendar.SECOND:秒、Calendar.DAY_OF_WEEK:星期幾

    c1.set(Calendar.DATE,10);

    該代碼的作用是將c1對象代表的時間中日期設置為10號,其他所有的數值會被重新計算,例如星期幾以及對應的相對時間數值等。
    Caledar c2=Calendar.getInstance(); 

    int year=c2.get(Calendar.YEAR); int month = c2.get(Calendar.MONTH) + 1; int date = c2.get(Calendar.DATE);  int hour = c2.get(Calendar.HOUR_OF_DAY);

    int minute = c2.get(Calendar.MINUTE); int second = c2.get(Calendar.SECOND); int day = c2.get(Calendar.DAY_OF_WEEK);

    get方法的聲明如下: public int get(int field)

    其中參數field代表需要獲得的字段的值,字段說明和上面的set方法保持一致。獲得的月份為實際的月份值減1,獲得的星期的值和Date類不一樣。

    在Calendar類中,周日是1,周一是2,周二是3,以此類推。

 

    add方法:

    public abstract void add(int field,int amount)

    該方法的作用是在Calendar對象中的某個字段上增加或減少一定的數值,增加是amount的值為正,減少時amount的值為負。

    c2.add(Calendar.DATE, 100);

   這里add方法是指在c2對象的Calendar.DATE,也就是日期字段上增加100,類內部會重新計算該日期對象中其它各字段的值,從而獲得100天以后的日期

 

   after方法:

   public boolean after(Object when)

   該方法的作用是判斷當前日期對象是否在when對象的后面,如果在when對象的后面則返回true,否則返回false。例如:

   Calendar c4 = Calendar.getInstance();

   c4.set(2009, 10 - 1, 10);

   Calendar c5 = Calendar.getInstance();

   c5.set(2010, 10 - 1, 10);

   boolean b = c5.after(c4);

   在該示例代碼中對象c4代表的時間是2009年10月10號,對象c5代表的時間是2010年10月10號,則對象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。

   另外一個類似的方法是before,該方法是判斷當前日期對象是否位於另外一個日期對象之前。

 

   getTime方法:

   public final Date getTime()

   該方法的作用是將Calendar類型的對象轉換為對應的Date類對象,兩者代表相同的時間點。

   類似的方法是setTime,該方法的作用是將Date對象轉換為對應的Calendar對象,該方法的聲明如下:

   public final void setTime(Date date)

   轉換的示例代碼如下: 

   public final void setTime(Date date)

   轉換的示例代碼如下:

   Date d = new Date();

  Calendar c6 = Calendar.getInstance();

  //Calendar類型的對象轉換為Date對象

  Date d1 = c6.getTime();

  //Date類型的對象轉換為Calendar對象

  Calendar c7 = Calendar.getInstance();

  c7.setTime(d);


  Calendar對象和相對時間之間的互轉:

  Calendar c8 = Calendar.getInstance();

  long t = 1252785271098L;

  //將Calendar對象轉換為相對時間

  long t1 = c8.getTimeInMillis();

  //將相對時間轉換為Calendar對象

  Calendar c9 = Calendar.getInstance();

  c9.setTimeInMillis(t1);

  在轉換時,使用Calendar類中的getTimeInMillis方法可以將轉換為相對時間。在將相對時間轉換為Calendar對象時,首先要創建一個Calendar對象,然后再使用Calendar類的setTimeInMillis方法設置時間即可。

   


免責聲明!

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



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