1. 程式人生 > >Java中常用日期操作及方法

Java中常用日期操作及方法

第一周 當前 計算 sys print border str2 入門教程 註意

前言

涉及到日期計算和字符串與日期轉換,轉來轉去很是麻煩,於是歸納總結一下。以下都可以用。

一、Dateformat類的常用格式

y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周數 Number 27
W 月份中的周數 Number 2
D 年中的天數 Number 189
d 月份中的天數 Number 10
F 月份中的星期 Number 2
E 星期中的天數 Text Tuesday; Tue
a Am/pm 標記 Text PM
H 一天中的小時數(0-23) Number 0

k 一天中的小時數(1-24) Number 24
K am/pm 中的小時數(0-11) Number 0
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
S 毫秒數 Number 978
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800

二、日期轉字符串,根據需要調整格式

    public void DateToString(){
        Date currentTime 
= new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(currentTime); System.out.println(dateString); }

三、字符串轉日期

    public void StrToDate() throws ParseException {
       String dateStr = "2019-01-19";
       SimpleDateFormat format 
= new SimpleDateFormat("yyyy-MM-dd"); Date date = null; date = format.parse(dateStr); System.out.println(date); }

四、獲取本月第一天

    public void getMonthFirstDay() throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
        Calendar cal=Calendar.getInstance();//獲取當前日期 
        cal.set(Calendar.DAY_OF_MONTH,1);//設置為1號,當前日期既為本月第一天 
        String monthFirstDay = format.format(cal.getTime());
        System.out.println(monthFirstDay);
    }

五、獲取本月最後一天

    public void getMonthLastDay() throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
        Calendar cal=Calendar.getInstance();//獲取當前日期 
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));  
        String monthLastDay = format.format(cal.getTime());
        System.out.println(monthLastDay);
    }

六、獲取上個月第一天。最後一天同理

public void getLastMonthFirstDay() throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
        Calendar cal=Calendar.getInstance();//獲取當前日期 
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH,1);//設置為1號,當前日期既為本月第一天 
        String monthFirstDay = format.format(cal.getTime());
        System.out.println(monthFirstDay);
    }

七、通過Calendar獲取年月日時分秒

    public void testCalendar() throws ParseException {
        Calendar cal = Calendar.getInstance();
        // 賦值時年月日時分秒常用的6個值,註意月份下標從0開始,所以取月份要+1
        System.out.println("年:" + cal.get(Calendar.YEAR));
        System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));       
        System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("時:" + cal.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + cal.get(Calendar.MINUTE));
        System.out.println("秒:" + cal.get(Calendar.SECOND));
    }

八、得到兩個時間相隔的天數

    public void getBetweenDay() throws ParseException{
        String dateStr1 = "2019-01-01";
        String dateStr2 = "2019-01-19";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
        Date date1 = format.parse(dateStr1);
        Date date2 = format.parse(dateStr2);
        Long inteverDay = (date2.getTime()-date1.getTime())/(1000*60*60*24);
        System.out.println(inteverDay);
    }

九、當前日期加一天

    public void addCurrentDay() throws ParseException {
        String datess = "2019-02-28";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = format.parse(datess);
        Calendar cal=Calendar.getInstance();//獲取當前日期 
        cal.setTime(parse);
        cal.add(Calendar.DAY_OF_YEAR, +1);
        String monthFirstDay = format.format(cal.getTime());
        System.out.println(monthFirstDay);
    }

十、Calendar轉換成date

    public void CalToDate() throws ParseException {
        Calendar cal=Calendar.getInstance(); 
        Date date=cal.getTime(); 
    }

十一、date轉換成Calendar

    public void DateToCal() throws ParseException {
        Calendar cal=Calendar.getInstance(); 
        Date date = new Date();
        cal.setTime(date);
    }

十二、獲得當前周周一的日期

    public void getMonday(){   
        Date date = new Date();
        Calendar c = Calendar.getInstance();   
        c.setTime(date);   
        //monday可以替換成任意星期幾
        c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);   
        String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());   
        System.out.println(dateStr);
    }  

十三、判斷兩個時間是否在同一周

    public boolean isSameWeekDates(Date date1, Date date2) {
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal1.setTime(date1);
        cal2.setTime(date2);
        int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
        if (0 == subYear) {
            if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
                return true;
            }
        } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
            // 如果12月的最後一周橫跨來年第一周的話則最後一周即算做來年的第一周
            if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
                return true;
            }
        } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
            if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
                return true;
            }
        }
        return false;
    }

推薦閱讀:

Redis入門教程(一) https://www.cnblogs.com/jichi/p/10285346.html

Spring入門詳細教程(一) https://www.cnblogs.com/jichi/p/10165538.html

Spring入門詳細教程(二) https://www.cnblogs.com/jichi/p/10176601.html

Spring入門詳細教程(三) https://www.cnblogs.com/jichi/p/10177004.html

Spring入門詳細教程(四) https://www.cnblogs.com/jichi/p/10211475.html

Java中常用日期操作及方法