java的Calendar类

java中的Calendar在开发中经常被忽略,这篇博客总结一下这个类,对后面项目中使用时期的时候有帮助。

Calendar常量(field)的作用

Calendar cal = Calendar.getInstance();
cal.get(Calendar.DATE);//-----------------------当天 1-31
cal.get(Calendar.DAY_OF_MONTH);//---------------当天 1-31
cal.get(Calendar.DAY_OF_WEEK);//----------------从星期天开始计算,如果今天星期二,那么返回3
cal.get(Calendar.DAY_OF_YEAR);//----------------
cal.get(Calendar.HOUR);//-----------------------12小时制
cal.get(Calendar.HOUR_OF_DAY);//----------------24小时制,一般使用这个属性赋值
cal.get(Calendar.MILLISECOND);//----------------
cal.get(Calendar.MINUTE);//---------------------
cal.get(Calendar.SECOND);//---------------------
cal.get(Calendar.WEEK_OF_MONTH);//--------------
cal.get(Calendar.WEEK_OF_YEAR);//---------------
cal.get(Calendar.MONTH);//-----------------------月份获取需要 +1,那么,赋值时需要 -1

总结:
1)常量的真正意义如上,我们一般使用这些常量进行赋值,换句话说,可以通过它获取值同样可以通过它进行对应赋值
2)赋值时,week 与 month 是很值得注意的,week 需要指定 setFirstDayOfWeek , 然而,月份则需要加减 1
3)赋值时,我们一般采用 年 月 日 时 分 秒
Calendar.YEAR 、Calendar.MONTH 、Calendar.DAY_OF_MONTH、 Calendar.HOUR_OF_DAY 、Calendar.MINUTE、 Calendar.SECOND

主要赋值语句

 cal.set(Calendar.XXX, VVVV);//--------------------- 对以上每个字段(field)进行赋值,代码重复较大
 cal.set(year,month,date,hour,minute,second);//----- 分别对字段(field)进行赋值,效率高

主要计算

 cal1.roll(Calendar.MONTH,3);//---------------------- 一般不使用,原因是该方法只在一个月里面循环计算,其大小不会超过该月最值
 cal1.add(Calendar.YEAR,-1);//----------------------- 使用 XX_OF_XX 的field进行加减计算效果更佳,而且计算准确
 cal1.add(field,value);//----------------------------

总结:
    1)关于roll的计算,cal.roll(Calendar.DAY_OF_MONTH, 32);虽然32已经超出了最大的可能31,但是cal实际是不会超出该月的,而是把32减去该月天数之后,重新计算剩下的天数;
    2)关于add的计算,cal1.add(Calendar.MONTH, 1); 如果当前为8-31,那么,加一个月的话就是9-30,这个才是真正的准确

主要取值语句

    cal.getMaximum(Calendar.DATE);
    cal.get(Calendar.DATE);
    cal.getMinimum(Calendar.DATE);
    cal.setTimeInMillis(cal.getTime().getTime());
    cal.setTimeInMillis(new Date().getTime());
总结:
    1)获取最大值,最小值是很常用的方法
    2)获取毫秒数后,可以通过 1000*60*60 进行计算

Calendar 获取当天\当月\当周

// 当天
    public String getThisToday(){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY,0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND,0);
        String start = sdf.format(cal.getTime());
        cal.set(Calendar.HOUR_OF_DAY,23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND,59);
        String end = sdf.format(cal.getTime());
        return start+"|"+end;
    }
// 本周
     public String getThisWeekDate(){
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar ca = Calendar.getInstance();
            ca.setFirstDayOfWeek(Calendar.MONDAY);
            ca.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
    ca.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH),ca.get(Calendar.DATE),23,59,59);
            String end = sdf.format(ca.getTime());
            ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            ca.set(Calendar.HOUR_OF_DAY,0);
            ca.set(Calendar.MINUTE, 0);
            ca.set(Calendar.SECOND,0);
            String start = sdf.format(ca.getTime());
            return start+"|"+end;
      }
//本月日期段
        public String getThisMonthDate(){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar cc2 = Calendar.getInstance();
        int maxMonthDay = cc2.getActualMaximum(Calendar.DAY_OF_MONTH);
        cc2.set(cc2.get(Calendar.YEAR), cc2.get(Calendar.MONTH),maxMonthDay,23,59,59);
        String end = sdf.format(cc2.getTime());
        cc2.set(cc2.get(Calendar.YEAR), cc2.get(Calendar.MONTH),1,0,0,0);
        String start = sdf.format(cc2.getTime());
        return start+"|"+end;
        }
时间: 2024-07-29 04:04:59

java的Calendar类的相关文章

JAVA学习--Calendar 类的应用

Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

Java.util.Calendar类简单介绍

Java.util.Calendar类 Calendar类是一个抽象类,里面提供了很多操作日历的方法.Calendar类无法直接创建对象使用,需要利用里面的一个静态方法getInstance(),该方法返回一个Calendar对象(子类对象).该静态方法使用默认时区和语言环境获取一个日历.这个静态方法是必须知道的否则根本玩不转Calendar. 1.Calendar类中的常量 Calendar cal = Calendar.getInstance(); cal.get(Calendar.DATE

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

java 的Calendar类的可视化日历示例

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; /** * 可视化日历程序 * */ public class VisualCal

java中Calendar类

1.测试代码: 1 package com; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Calendar; 5 import java.util.Date; 6 7 /** 8 * Created by huyanxia on 2017/9/30. 9 */ 10 public class calendarTest { 11 public static void main(String[] args) { 12 Calen

java之Calendar类

1 public class Demo9_Calendar { 2 3 /* 4 * A:Calendar是一个抽象类 5 * B:成员方法 6 * public static Calendar getInstance() 7 * public int get(int field) 8 * C:成员方法 9 * public void add(int field, int amount) 对指定的字段进行向前或向后加或减 10 * public final void set(int year,

java使用Calendar类获取常用简单工具类

前言: 在工作中,我们经常会用到时间相关的.比如月初.月末.年初.年末.指定月份所在季度的季末.当前时间加X天.x月.x年等这些常用的虽说不难,但是如果要用到,立马又想不起来.这里凯哥归纳了一些常用的放在一个工具类中.有需要的朋友可以拿去或是收藏.如果大家有更好的,欢迎留言.如果凯哥哪里不对,欢迎大家留言骂起~. 声明:本文有凯哥Java(www.kaigejava.com)发布于凯哥个人博客. 正文: 1:获取指定日期 指定月份后的最后一天.返回格式:yyyyMMdd 获取指定日期 指定月份后

Java中Calendar类的常用方法(对时间进行计算的类)

例子: /**** * 传入具体日期 ,返回具体日期增加一个月. * @param date 日期(2017-04-13) * @return 2017-05-13 * @throws ParseException */ private String subMonth(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date dt = sdf.

Java基础(38):Calendar类的应用(优于Date类)

Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();