首頁>Club>
8
回覆列表
  • 1 # 小格子實用技巧

    Java日期工具類:可以進行日期轉化、今天日期、昨天日期、明天日期、指定日期,非常實用。

    想必程式設計師在開發過程中,遇到日期轉化肯定避免不了的。它讓人愛恨不已,而有些又記不住,每次遇到都得問度娘。我最近在開發過程中亦是如此。

    為了讓自己更好的記憶,方便以後遇到日期型別轉化相關開發。因此,自己作了適當的整理,編寫了一個Java日期工具類,包括獲得今天日期、昨天日期、明天日期、日期和字串之間轉化等相關轉化。希望這個日期工具類,也能提高你對日期轉化的開發效率。

    日期工具類:DateTools.java

    package com.geshanzsq;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.Calendar;

    import java.util.Date;

    import java.util.GregorianCalendar;

    /**

    * 日期工具類

    * @author 格姍知識圈

    */

    public class DateTools {

    /**

    * 日期轉化為指定日期格式型別

    * @param date 日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    */

    public static String dateToString(Date date,String pattern){

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String date_str = sdf.format(date);//日期轉化為指定格式

    return date_str;

    }

    /**

    * 日期字串轉化為指定日期格式型別

    * @param date_str 日期字串

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    * @throws ParseException

    */

    public static Date stringToDate(String date_str,String pattern) throws ParseException {

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    Date date = sdf.parse(date_str);//日期轉化為指定格式

    return date;

    }

    /**

    * 獲得今天日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    */

    public static String getToday(String pattern){

    Date date = new Date();//今天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String today = sdf.format(date);//日期轉化為指定格式

    return today;

    }

    /**

    * 獲得明天日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    */

    public static String getTomorrow(String pattern){

    Date date = new Date();//今天日期

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往後推一天的日期結果,即明天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String tommorrow = sdf.format(date);//明天日期

    return tommorrow;

    }

    /**

    * 獲得昨天日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    */

    public static String getYesterday(String pattern){

    Date date = new Date();//今天日期

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,-1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往前推一天的日期結果,即昨天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String yesterday = sdf.format(date);//昨天日期

    return yesterday;

    }

    /**

    * 獲得指定日期的後一天

    * @param date 指定日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    * @throws ParseException

    */

    public static Date getAfterDay(Date date,String pattern) throws ParseException {

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往後推一天的日期結果,即後一天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String next_date_str = sdf.format(date);//後一天日期

    //將日期字串轉化為指定日期格式型別

    Date after_date = stringToDate(next_date_str,pattern);

    return after_date;

    }

    /**

    * 獲得指定日期的後一天

    * @param date_str 指定日期字串

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    * @throws ParseException

    */

    public static String getAfterDay(String date_str,String pattern) throws ParseException {

    //將日期字串轉化為指定日期格式型別

    Date date = stringToDate(date_str,pattern);

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往後推一天的日期結果,即後一天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String after_date_str = sdf.format(date);//後一天日期

    return after_date_str;

    }

    /**

    * 獲得指定日期的前一天

    * @param date 指定日期

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    * @throws ParseException

    */

    public static Date getBeforetDay(Date date,String pattern) throws ParseException {

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,-1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往後推一天的日期結果,即前一天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String before_date_str = sdf.format(date);//前一天日期

    //將日期字串轉化為指定日期格式型別

    Date before_date = stringToDate(before_date_str,pattern);

    return before_date;

    }

    /**

    * 獲得指定日期的前一天

    * @param date_str 指定日期字串

    * @param pattern 日期格式型別,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss

    * @return

    * @throws ParseException

    */

    public static String getBreforeDay(String date_str,String pattern) throws ParseException {

    //將日期字串轉化為指定日期格式型別

    Date date = stringToDate(date_str,pattern);

    Calendar cal = new GregorianCalendar();

    cal.setTime(date);//設定時間

    cal.add(Calendar.DATE,-1);//把日期往後增加一天.整數往後推,負數往前移動

    date = cal.getTime();//這個時間就是日期往後推一天的日期結果,即前一天日期

    SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式

    String before_date_str = sdf.format(date);//前一天日期

    return before_date_str;

    }

    }

    測試類:Test.java

    package com.hrg;

    import java.text.ParseException;

    /**

    * 測試類

    * @author 格姍知識圈

    */

    public class Test {

    public static void main(String[] args) throws ParseException {

    //日期格式型別

    String pattern = "yyyy-MM-dd";

    //獲得今天日期

    System.out.println("---------獲得今天日期---------");

    String today = DateTools.getToday(pattern);

    System.out.println("今天日期:"+today);

    //獲得明天日期

    System.out.println("---------獲得明天日期---------");

    String tomorrow = DateTools.getTomorrow(pattern);

    System.out.println("明天日期:"+tomorrow);

    //獲得昨天日期

    System.out.println("---------獲得昨天日期---------");

    String yesterday = DateTools.getYesterday(pattern);

    System.out.println("昨天日期:"+yesterday);

    //獲得指定日期的後一天

    System.out.println("---------獲得指定日期的後一天---------");

    String date_str = "2018-10-03";

    System.out.println("指定日期:"+date_str);

    String after_date = DateTools.getAfterDay(date_str,pattern);

    System.out.println("指定日期的後一天:"+after_date);

    //獲得指定日期的後一天

    System.out.println("---------獲得指定日期的前一天---------");

    System.out.println("指定日期:"+date_str);

    String before_date = DateTools.getBreforeDay(date_str,pattern);

    System.out.println("指定日期的前一天:"+before_date);

    }

    }

    執行結果:

    ---------獲得今天日期---------

    今天日期:2018-11-20

    ---------獲得明天日期---------

    明天日期:2018-11-21

    ---------獲得昨天日期---------

    昨天日期:2018-11-19

    ---------獲得指定日期的後一天---------

    指定日期:2018-10-03

    指定日期的後一天:2018-10-04

    ---------獲得指定日期的前一天---------

    指定日期:2018-10-03

    指定日期的前一天:2018-10-02

    你看完之後,相信對日期轉化有了更好的瞭解。當然,程式碼裡面有部分是冗餘的,主要是為了方便讓大家清晰看懂。你看懂理解後,可以根據業務需要進行適當的修改。

  • 中秋節和大豐收的關聯?
  • 如何在減肥期間戒掉零食?