Java日期格式化

  • 2019 年 12 月 31 日
  • 筆記

文章目錄

  1. 1. 日期格式化
    1. 1.1. 前言
    2. 1.2. Date
      1. 1.2.1. 構造方法
      2. 1.2.2. 常用的方法
      3. 1.2.3. 實例
    3. 1.3. SimpleDateFormat
      1. 1.3.1. 構造方法
      2. 1.3.2. 常用的方法
      3. 1.3.3. 常用的日期格式化的模板
      4. 1.3.4. 實例
    4. 1.4. Calendar
      1. 1.4.1. 創建對象
      2. 1.4.2. 常用方法
      3. 1.4.3. 實例

日期格式化

前言

Date

Date類表示特定的瞬間精確到毫秒,不過從API可以看出很多的方法已經廢棄了,這個類已經在過多使用了,不過還是需要了解一下的,為了後面的學習做鋪墊

構造方法

  • new Date()

常用的方法

  • long getTime() 返回電腦上面的時間,返回的是毫秒
  • setTime(long s) 用給定的毫秒值s設置時間

實例

Date date=new Date();  System.out.println(date.getTime());

SimpleDateFormat

  • 這個類是一個簡單的格式化日期的類,繼承與DateFormat,相對於父類來說使用簡單

構造方法

  • new SimpleDateFormat() 使用默認的格式化模板創建對象
  • new SimpleDateFormat(String pattern) 使用指定的格式化模板創建對象

常用的方法

  • String format(Date date) 將給定的日期格式化指定的模板的樣式,比如2017-01-29 23:22:11
  • applyPattern(String pattern) 將給定的格式應用於此日期的格式,相當於直接使用new Date(String pattern)
  • Date parse(String d) 將給定的格式化的日期格式字元串轉換成Date對象,需要注意的是轉化的時候定義的模板一定要和字元串的日期格式的模板一樣,否則將會解析不正確的形式

常用的日期格式化的模板

實例

  • 使用默認的模板格式化日期
SimpleDateFormat dateFormat=new SimpleDateFormat();   //默認的格式  String formateString=dateFormat.format(date);   //格式化當前的日期  System.out.println(formateString);
  • 使用指定的模板格式化日期
String model="yyyy-MM-dd-FF  HH:mm:ss";  //指定格式化的模板  SimpleDateFormat dateFormat2=new SimpleDateFormat(model);  System.out.println(dateFormat2.format(date));
  • 將格式化的日期轉換成Date類型的,使用的parse(String s),需要注意的是,下面定義的模板一定要和給定的格式化後的日期格式一樣,否則轉換後Date類型的毫秒值可能不正確
      String d = "2017-06-12 22:34:19";   //給出格式化後的日期  String pattern = "yyyy-MM-dd HH:mm:ss";  //按照上面的日期格式定義模板,這個一定要完全和上面的一樣,否則轉換不正確  SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);  try {  	Date date = dateFormat.parse(d);   //解析成Date類型  	System.out.println(dateFormat.format(date));  } catch (ParseException e) {  	System.err.println("解析錯誤");    }
  • 綜合使用:計算時間差
Scanner scanner=new Scanner(System.in);  System.out.println("請輸入年-月-日");  String startTime=scanner.next();  System.out.println("請輸入結束時間(年-月-日)");  String endTime=scanner.next();  String moudle="yyyy-MM-dd";   //定義時間模板  //創建指定模板的解析  SimpleDateFormat dateFormat=new SimpleDateFormat(moudle);  Date startDate=dateFormat.parse(startTime);//解析開始時間  Date endDate =dateFormat.parse(endTime);//解析結束時間  long time=startDate.getTime()-endDate.getTime();  //返回兩個時間的差,毫秒  int day=(int)(time/1000/60/60/24);  //轉化為天數,1秒等於1000毫秒,一分鐘等於60秒,一小時等於60分鐘,一天等於24小時  System.out.println(day);

Calendar

Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,並為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。

創建對象

  • Calendar.getInstance()

常用方法

  • int get(int field) 返回當前對象的一些日期資訊
  • Date getTime() 獲得當前日期的Date對象
  • add(int field,int amount) 根據日曆的規則,為給定的日曆欄位添加或減去指定的時間量。例如,要從當前日曆時間減去 5 天,可以通過調用以下方法做到這一點:add(Calendar.DAY_OF_MONTH, -5)
  • setTime(Date date) 使用給定的Date對象,設置Calendar時間

實例

  • get方法獲取一些欄位的值
      Calendar calendar = Calendar.getInstance(); // 創建對象  System.out.println(calendar.get(Calendar.YEAR));// 獲取年份  System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,從0開始,即是輸出5表示6月  System.out.println(calendar.get(Calendar.DATE));// 獲取一個月中的第幾天  System.out.println(calendar.get(Calendar.HOUR)); // 小時  System.out.println(calendar.get(Calendar.MINUTE)); // 分鐘  System.out.println(calendar.get(Calendar.SECOND)); // 秒  System.out.println(calendar.get(Calendar.AM_PM)); // 獲得是上午還是下午AM=0,PM=1  System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一個月中的第幾天  System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一周中的第幾天,星期日是第一天  System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第幾天  System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 一天中的第幾小時    if (calendar.get(Calendar.AM_PM) == Calendar.AM) {  	System.out.println("現在是上午");  }    if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) {  	System.out.println("現在是6月");  }
  • Date getTime()方法的使用
Calendar calendar=Calendar.getInstance();  Date date=calendar.getTime();   //獲得Date對象  String pattern="yyyy-MM-dd  HH:mm:ss";  SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);  System.out.println(dateFormat.format(date));
  • add(int field,int amount)方法的使用
      Calendar calendar=Calendar.getInstance();  calendar.add(Calendar.DATE, -2);  System.out.println(calendar.get(Calendar.DATE));
  • 綜合實例:計算出當前的準確日期
      Calendar calendar = Calendar.getInstance();  int year = calendar.get(Calendar.YEAR);  int month = calendar.get(calendar.MONTH) + 1; // 從0開始算,因此加1  int date = calendar.get(Calendar.DATE);  int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 從周日開始算,因此加1  int hour = calendar.get(Calendar.HOUR);  int minute = calendar.get(Calendar.MINUTE);  int seconds = calendar.get(Calendar.SECOND);  if (calendar.get(Calendar.AM_PM) == Calendar.AM) {    	System.out.println("現在是" + year + "年" + month + "月" + date + "號"  			+ "星期" + week + "上午" + hour + "點" + minute + "分" + seconds  			+ "秒");    } else {  	System.out.println("現在是" + year + "年" + month + "月" + date + "號"  			+ "星期" + week + "下午" + hour + "點" + minute + "分" + seconds  			+ "秒");  }