Java 日期時間

1、Date

java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。
第一個構造函數使用當前日期和時間來初始化對象。

Date( )

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

Date(long date)

2、Date常用方法

在這裏插入圖片描述

3、使用printf格式化日期

printf 方法可以很輕鬆地格式化時間和日期。使用兩個字母格式,它以 %t 開頭並且以下面表格中的一個字母結尾。
在這裏插入圖片描述
實例

import java.util.Date;
 
public class DateDemo {
 
  public static void main(String args[]) {
     // 初始化 Date 對象
     Date date = new Date();
 
     //c的使用  
    System.out.printf("全部日期和時間信息:%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時制):%tr%n",date);  
    //t的使用  
    System.out.printf("HH:MM:SS格式(24時制):%tT%n",date);  
    //R的使用  
    System.out.printf("HH:MM格式(24時制):%tR",date);  
  }
}

4、Calendar類

抽象類 Calendar 提供了一組方法,允許把以毫秒爲單位的時間轉換成一些有用的時間組成部分。Calendar 不能直接創建對象,但可以使用靜態方法 getInstance() 獲得代表當前日期的日曆對象。

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

5、Calendar方法

在這裏插入圖片描述

6、Calendar類對象字段類型

Calendar類中用以下這些常量表示不同的意義
在這裏插入圖片描述

7、Calendar類對象信息的設置

Set設置
如:

Calendar c1 = Calendar.getInstance();

調用:

public final void set(int year,int month,int date)
c1.set(2019, 11, 14);//把Calendar對象c1的年月日分別設這爲:2019、11、14

利用字段類型設置
如果只設定某個字段,例如日期的值,則可以使用如下set方法:

public void set(int field,int value)

把 c1對象代表的日期設置爲15號,其它所有的數值會被重新計算

c1.set(Calendar.DATE,15);

把c1對象代表的年份設置爲2018年,其他的所有數值會被重新計算

c1.set(Calendar.YEAR,2018);

Add設置

Calendar c1 = Calendar.getInstance();

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

c1.add(Calendar.DATE, 10);

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

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);
// 獲得小時
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);

8、LocalDate和LocalTime

在JAVA中,常用的處理日期和時間的類主要有Date,Calendar,而在JDK1.8中,新增了兩個處理日期和時間的類,一個是LocalDate,另一個是LocalTime。LocalDate和LocalTime線程安全,而且不能修改。
LocalDate主要是用來處理日期的類
主要有以下方法:
在這裏插入圖片描述
LocalTime主要是用來處理時間的類
主要有以下方法:
在這裏插入圖片描述
代碼實例:

package timedemo;

import org.junit.Test;

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

/**
 * @author 黃秋平
 * @date 2019-11-15 16:52
 **/
public class DateTest {

    /**
     * 日期格式化
     * */
    @Test
    public void Test01(){

        /**
         * SHORT是完全數字的,如12.13.52或3:30pm
         * MEDIUM較長,如Jan 12, 1952
         * LONG較長,如January 12, 1952或3:30:32pm
         * FULL是完全指定的,如Tuesday, April 12, 1952 AD or 3:30:42pm PST
         *
         * */

        //獲取不同格式化風格和中國環境的日期
        DateFormat df1=DateFormat.getDateInstance(DateFormat.SHORT);
        DateFormat df2=DateFormat.getDateInstance(DateFormat.FULL);
        DateFormat df3=DateFormat.getDateInstance(DateFormat.MEDIUM);
        DateFormat df4=DateFormat.getDateInstance(DateFormat.LONG);

        //獲取不同格式化風格和中國環境的時間
        DateFormat df5=DateFormat.getTimeInstance(DateFormat.SHORT);
        DateFormat df6=DateFormat.getTimeInstance(DateFormat.FULL);
        DateFormat df7=DateFormat.getTimeInstance(DateFormat.MEDIUM);
        DateFormat df8=DateFormat.getTimeInstance(DateFormat.LONG);

        //將不同格式化風格的日期格式化爲日期字符串
        String date1=df1.format(new Date());
        String date2=df2.format(new Date());
        String date3=df3.format(new Date());
        String date4=df4.format(new Date());

        //將不同格式化風格的時間格式化爲時間字符串
        String time1=df5.format(new Date());
        String time2=df6.format(new Date());
        String time3=df7.format(new Date());
        String time4=df8.format(new Date());

        //輸出日期
        System.out.println("SHORT:"+date1+" "+time1);
        System.out.println("FULL:"+date2+" "+time2);
        System.out.println("MEDIUM:"+date3+" "+time3);
        System.out.println("LONG:"+date4+" "+time4);

    }
    /**
     * 對日期增減操作:年
     * */
    @Test
    public void Test02(){

        //實例化Date對象
        Date date = new Date();
        //實例化SimpleDateFormat對象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //輸出當時間
        System.out.println("當前時間:"+sdf.format(date));
        //返回一個Calendar對象,其日曆字段已使用當前日期和時間進行初始化
        Calendar cal = Calendar.getInstance();
        //設置字段中的值
        cal.setTime(date);
        //amount值表示對當前時間增減,1爲+1,-1爲-1
        cal.add(Calendar.YEAR, 10);
        //實例化Date對象
        Date date1 = cal.getTime();
        //輸出增減後的時間
        System.out.println("增減後的時間:"+sdf.format(date1));
    }


    /**
     * 對日期增減操作:月
     * */
    @Test
    public void Test03(){

        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("當前時間:"+sdf.format(date));
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        //amount值表示對當前時間增減,1爲+1,-1爲-1
        cal.add(Calendar.MONTH, 10);
        Date date1 = cal.getTime();
        System.out.println("增減後的時間:"+sdf.format(date1));
    }


    /**
     * 對日期增減操作:小時
     * */
    @Test
    public void Test04() {
        String oneHoursAgoTime = "";
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");
        System.out.println("當前時間:"+sdf.format(date));
        Calendar rightNow = Calendar.getInstance();
        rightNow.setTime(date);
        rightNow.add(Calendar.HOUR, -1);
        Date dt1 = rightNow.getTime();
        System.out.println("增減後的時間:"+sdf.format(dt1));
    }
}
發佈了85 篇原創文章 · 獲贊 129 · 訪問量 7549
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章