Calendar类常用方法,获取每月最大天数
Calendar类
平时用到时间戳主要是用java.sql.Timestamp这个类,但是Timestamp获取年月日时分秒的方法现在都标注不推荐了,为了防止官方哪天突然给他删了,可以用Calendar类做一些替代操作。
Calendar对象初始化
Calendar cal = Calendar.getInstance(); // 返回一个基于当前时间和默认时区、区域设置的日历对象
日历一般配合时间戳使用,所以还需要设置时间
cal.setTime(timestamp); //这里的timestamp可以是任意一个Date格式的对象
这个方法的本质是把timestamp的毫秒数赋给cal,所以以下操作可以达到相同效果
cal.setTimeInMillis(timestamp.getTime());
Calendar对象常用方法
//获取时间
Date time = cal.getTime();//date=Sun Jan 27 16:27:27 CST 2019//获取年
int year = cal.get(Calendar.YEAR); //year=2019//获取月份 Calendar.MONTH从0开始(1月是0,12月是11) ,使用时通常会+1
int month = cal.get(Calendar.MONTH) + 1; //month=1//获取当前是本月的第多少天:两种方法等价
int day_of_month = cal.get(Calendar.DAY_OF_MONTH); //day_of_month=27
int day = cal.get(Calendar.DATE); //day=27//获取当月天的最大值,即当月有多少天
int max_day_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //max_day_of_month=31//获取当前小时(24小时制)
int hour24 = cal.get(Calendar.HOUR_OF_DAY); //hour24=16
//12小时制
int hour12 = cal.get(Calendar.HOUR); //hour12=4//获取当前:分钟
int minute = cal.get(Calendar.MINUTE); //minute=27//当前秒
int second = cal.get(Calendar.SECOND); //second=27//星期几:用数字(1~7)表示(星期日~星期六),使用时通常会-1
int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1; //day_of_week=0//上午-0;下午-1
int amOrPm = cal.get(Calendar.AM_PM); //amOrPm=1//当前年的第几周
int week_of_year = cal.get(Calendar.WEEK_OF_YEAR); //week_of_year=5//当前月的星期数
int week_of_month = cal.get(Calendar.WEEK_OF_MONTH); //week_of_month=5//当前月中的第几个星期
int day_of_week_in_month = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH); //day_of_week_in_month=4//当前年的第几天
int day_of_year = cal.get(Calendar.DAY_OF_YEAR); //day_of_year=27
注意项
Calendar有很多方法都是复用的,比如get()方法和getActualMaximum()方法,传入的参数是一个用来区分要调用的功能的整形。所以如果想用getActualMaximum()方法获得一个月的最大天数,即:
int actualMaximum = cal.getActualMaximum(Calendar.DAY_OF_YEAR);//一年最大天数
actualMaximum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);//一月最大天数
但如果想要获取下个月的最大天数,就不能直接:
actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH+1);
Calendar.DAY_OF_MONTH(DATE)的值是一个定值5,所以加1后传入的值为6,等效于DAY_OF_YEAR,最后会返回给actualMaximum一个值365(或366),如果想要获取时间戳所指向的下一个月或年的最大天数,应该:
cal.add(Calendar.MONTH,1);
actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
这个操作是给当前日历对象cal所指向的月份+1,想操作年份或天数的话同理将Calendar.MONTH替换成Calendar.YEAR或Calendar.DAY_OF_YEAR即可,同理,如果想获取的是上一个月的,给月数-1即可:
cal.add(Calendar.MONTH,-1);
actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- 综上,形如Calendar.DAY_OF_MONTH的参数起到的其实是一个类似枚举类的作用,用来标识在调用某个可复用方法时实际想要使用的方法。
Calendar类常用方法,获取每月最大天数相关推荐
- Calendar类常用方法 日期间的转换 set方法有巨坑
今天发现项目的工具类方法有个bug,而且还能迷惑你的bug,刚开始也是很迷惑,因为这个bug之前出现过,但是过了两天就自己好了,今天又出现了,哦对,今天是 2017年3月31日,之所 ...
- Calendar类常用方法
概念 java.util.Claendar日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法,该类将所有的可能用到的时间信息封装为静态成员变量,通过类名.静态成员变量获取时间字段值 ...
- java Date days_JAVA的Date类与Calendar类(常用方法)
念念不忘,必有回响 http://blog.csdn.net/xiaopihai86/article/details/50827945 1.用Java.util.Calender来实现 Calenda ...
- python获取本月天数_Python从程序中用户的输入中获取每月的天数
这就是我要做的: 用户将按顺序输入年.月数(1-12)和日数.程序将确定日期是在将来还是在过去.(如果输入的日期是今天的日期,则假定该日期是过去的日期).未来的约会是尚未发生的日期.如果今天是7月31 ...
- Calendar类的常用方法分享
Calendar类常用方法分享 Calendar类 一些常用的方法 附上一些常用field Calendar类 该类是在java.util包下,是一个abstract修饰的类,不能通过new的方式获取 ...
- Calendar类-日历类常用方法(JAVA)
Calendar类概述 Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法 Calendar 提供了一个类方法 getInstance 用于获取 ...
- java获取calendar_java--获取当前时间(Calendar类)
用Calendar类来获取当前的时间 代码: import java.util.Calendar; public class CalendarDemo { /** * @param args */ p ...
- Java日期相关类:Date、SimpleDateFormat和Calendar类常用API代码示例
Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间 Date类的构造方法 Date() :创建的是一个表示当前系统时间的Date对象 Date(long ...
- java -Date、DateFormat、Calendar类
Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis() 相当于Date d = new Date ...
最新文章
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行center中心化、scale标准化(每个数据列减去平均值、除以标准差)、设置参数为center和scale
- 使用bc45编译ucos-II的配置过程
- android相关使用工具
- [postgresql] postgresql 安装
- WordPress Restful API registration to Kyma WordPress API注册到Kyma的实现原理
- Linux下查看文件和文件夹大小的df和du命令(链接)
- cgi php脚本运行超时间,php超时 - php-cgi调用外部程序超时,但php在命令行模式下能完整运行外部程序...
- Cartographer—ROS中的安装
- ubuntu之解决挂载NTFS磁盘时出现input/output error
- 《大师谈游戏设计——创意与节奏》【笔记一】
- Kafka | Kafka中如何实现死信队列重试队列
- 怎么关闭fcitx的简繁切换和vscode的查找快捷键冲突了
- 基于Revel开发的组件化代码生成器
- linux下xz格式,linux下 x.tar.xz格式文件的解压方法
- 用matlab绘制P三曲线,科学网—水文频率曲线及MATLAB绘制 - 张凌的博文
- OPENSTACK-210-3-配置网络(Configure networking)-命令行
- 半年销售100万辆 关注比亚迪后300万时代
- 【C# 教程系列第 11 篇】什么是抽象类、抽象方法
- Org-mode + GitHub 搭建自己的云笔记
- Stm32MP157-Linux(Ubuntu)——Ubuntu入门