• Java常用日期操作


    对java中常用的日期操作进行整理。

    1、日期格式化

    /*
    * 日期格式化类(必须掌握)
    * API:
    * G Era 标志符 Text AD
    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

    */

    //日期转字符串,根据需要调整格式
        @Test
        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);
        }
        
        //字符串转日期
        @Test
        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);
        }
        
        //获取本月第一天
        @Test
        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);
        }
        
        //获取本月最后一天
        @Test
        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);
        }
        
        //获取上个月第一天。最后一天同理
        @Test
        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获取年月日时分秒
        @Test
        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));
        }
        
        //得到两个时间相隔的天数
        @Test
        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);
        }
        
        //当前日期加一天
        @Test
        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
        @Test
        public void CalToDate() throws ParseException {
            Calendar cal=Calendar.getInstance(); 
            Date date=cal.getTime(); 
        }
        
        //date转换成Calendar
        @Test
        public void DateToCal() throws ParseException {
            Calendar cal=Calendar.getInstance(); 
            Date date = new Date();
            cal.setTime(date);
        }
        
        //获得当前周周一的日期
        @Test
        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;
        }
  • 相关阅读:
    MySQL数据库生成某一年的日历存储过程
    MySQL随笔(四)
    MySQL索引
    MySQL随笔(三)
    MySQL随笔(二)
    MySQL随笔(一)
    设计模式---策略模式
    数组间相互转换 int[]转list
    安装brew -- Homebrew
    mongodb查询方法
  • 原文地址:https://www.cnblogs.com/jichi/p/10338172.html
Copyright © 2020-2023  润新知