美文网首页
java java时间和Calendar 类的相关用法

java java时间和Calendar 类的相关用法

作者: hlchengzi | 来源:发表于2019-08-11 17:09 被阅读0次

时间的相关操作:

String -> Date

java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String s= "2011-07-09 ";
Date date = formatter.parse(s);

Date->String

java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String date = formatter.format(new Date());//格式化数据

将时间转换为时间戳

    public static String dateToStamp(String s) throws ParseException{
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse(s);
        long ts = date.getTime();
        res = String.valueOf(ts);
        return res;
    }

将时间戳转换为时间

public static String stampToDate(String s){
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long lt = new Long(s);
        Date date = new Date(lt);
        res = simpleDateFormat.format(date);
        return res;
    }

获取一段时间里面的月份,月开始和月结束的获取方法

    /**
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static Map<String,String> getMonths(String startTime, String endTime) throws ParseException {

        Map<String,String> map = new HashMap<>(8);
        Calendar cal = new GregorianCalendar();

        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

        cal.setTime(simpleDateFormat.parse(endTime));
        int endMonth = cal.get(Calendar.MONTH);
        int endYear = cal.getWeekYear();

        Date startDate=simpleDateFormat.parse(startTime);
        cal.setTime(startDate);

        while(cal.get(Calendar.MONTH)<=endMonth || cal.getWeekYear()<endYear){
            Date date = new Date(cal.getTimeInMillis());
            String s1 = simpleDateFormat.format(getFirstDayOfMonth(date));
            String s2 = simpleDateFormat.format(getLastDayOfMonth(date));
            map.put(s1,s2);
            cal.add(Calendar.MONTH,1);
        }

        return map;
    }

    /**
     * 获取指定时间的当月第一天
     * @param date
     * @return
     */
    public static Date getFirstDayOfMonth(Date date) {
        Calendar cal = new GregorianCalendar();
        cal.setTime(date);

        // 获取某月最小天数
        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最小天数
        cal.set(Calendar.DAY_OF_MONTH, firstDay);
        // 格式化日期

        return cal.getTime();
    }
    /**
     * 获得指定时间当月最后一天
     *
     * @return
     */
    public static Date getLastDayOfMonth(Date date) {
        Calendar cal = new GregorianCalendar();
        cal.setTime(date);

        // 获取某月最小天数
        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        // 获取某月最大天数
        int month = cal.get(Calendar.MONTH)+1;
        int lastDay;
        //2月的平年瑞年天数
        if(month==2) {
            lastDay = cal.getLeastMaximum(Calendar.DAY_OF_MONTH);
        }else {
            lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        }
        // 设置日历中月份的最大天数
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        return cal.getTime();
    }

获取指定时间的周开始和周结束,一段时间里面的周

public static Map<String,String> getWeeks(String startTime, String endTime) throws ParseException {

        Map<String,String> map = new HashMap<>(8);
        Calendar cal = new GregorianCalendar();
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

        cal.setTime(simpleDateFormat.parse(endTime));
        int endWeek = cal.get(Calendar.WEEK_OF_YEAR);
        int endYear = cal.getWeekYear();

        Date startDate=simpleDateFormat.parse(startTime);
        cal.setTime(startDate);

        while(cal.get(Calendar.WEEK_OF_YEAR)<=endWeek || cal.getWeekYear()<endYear){
            Date date = new Date(cal.getTimeInMillis());
            String s1 = simpleDateFormat.format(getFirstDayOfWeek(date));
            String s2 = simpleDateFormat.format(getLastDayOfWeek(date));
            map.put(s1,s2);
            cal.add(Calendar.WEEK_OF_YEAR,1);
        }

        return map;
    }

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

        /**
         * 月份是以0开始的
         */
        Map<String,String> map1 = getMonths("2019-02-04","2019-08-11");
        Map<String,String> map = getWeeks("2019-08-04","2019-08-11");

    }

    /**
     * 获取指定日期的第后一天
     * @param date
     * @return
     */
    public static Date getFirstDayOfWeek(Date date) {
        Calendar c = new GregorianCalendar();
        c.setFirstDayOfWeek(Calendar.MONDAY);
        c.setTime(date);
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
        return c.getTime ();
    }

    /**
     * 获取指定日期的第一天
     * @param date
     * @return
     */
    public static int getWeekOfYear(Date date) {
        Calendar c = new GregorianCalendar();
        c.setFirstDayOfWeek(Calendar.MONDAY);
        c.setMinimalDaysInFirstWeek(7);
        c.setTime (date);

        return c.get(Calendar.WEEK_OF_YEAR);
    }

    /**
     * 取得指定日期所在周的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDayOfWeek(Date date) {
        Calendar c = new GregorianCalendar();
        c.setFirstDayOfWeek(Calendar.MONDAY);
        c.setTime(date);
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
        return c.getTime();
    }

相关文章

网友评论

      本文标题:java java时间和Calendar 类的相关用法

      本文链接:https://www.haomeiwen.com/subject/cujsjctx.html