Java基础-Calendar类常用方法介绍
Java基础-Calendar类常用方法介绍
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Calendar类概念
Calendar
类是一个抽象类,它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
Calemdar类写了静态方法getInstance() 可以直接返回子类的对象,不需要直接new 子类的对象,通过静态方法直接获取。
二.Calendar类常用方法
1>.getInstance
与其他语言环境敏感类一样,Calendar
提供了一个类方法 getInstance
,以获得此类型的一个通用的对象。Calendar
的 getInstance
方法返回一个 Calendar
对象,其日历字段已由当前日期和时间初始化:
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.util.Calendar;
- public class CalendarDemo {
- public static void main(String[] args) {
- Calendar c = Calendar.getInstance();
- System.out.println(c);
- }
- }
- /*
- 以上代码执行结果如下:
- java.util.GregorianCalendar[time=1524043662523,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=3,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=18,DAY_OF_YEAR=108,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=27,SECOND=42,MILLISECOND=523,ZONE_OFFSET=28800000,DST_OFFSET=0]
- */
2>.get方法
Calendar类的get方法,用于获取日历字段的值,返回值的结果也是个int类型的值。
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.util.Calendar;
- public class CalendarDemo {
- public static void main(String[] args) {
- Calendar c = Calendar.getInstance();
- //获取年份
- int year = c.get(Calendar.YEAR);
- //获取月份(月份是从0开始计数的,因此我们有必要+1)
- int mouth = c.get(Calendar.MONTH);
- //获取天数
- int day = c.get(Calendar.DAY_OF_MONTH);
- System.out.printf("%d年%d月%d日",year,mouth+1,day);
- }
- }
- /*
- 以上代码执行结果如下:
- 2018年4月18日
- */
3>.set方法
将给定的日历字段设置为给定值。
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.util.Calendar;
- public class CalendarDemo {
- public static void main(String[] args) {
- Calendar c = Calendar.getInstance();
- //设置月份,设置10月份(月份是以0开始计数的哟!)
- c.set(Calendar.MONTH, 10);
- //设置年,月,日
- c.set(2099, 4, 19);
- //获取年份
- int year = c.get(Calendar.YEAR);
- //获取月份(月份是从0开始计数的,因此我们有必要+1)
- int mouth = c.get(Calendar.MONTH);
- //获取天数
- int day = c.get(Calendar.DAY_OF_MONTH);
- System.out.printf("%d年%d月%d日",year,mouth+1,day);
- }
- }
- /*
- 以上代码执行结果如下:
- 2099年5月19日
- */
4>.add方法
日历的偏移量,可以指定一个日历中的字段,进行整数的偏移。
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.util.Calendar;
- public class CalendarDemo {
- public static void main(String[] args) {
- Calendar c = Calendar.getInstance();
- //获取到天数后,如果是负数就向前偏移,如果是正数就向后偏移,此处是获取到当月天数后,会在当前月份的偏移接近10个月)
- c.add(Calendar.DAY_OF_MONTH, -280);
- //获取年份
- int year = c.get(Calendar.YEAR);
- //获取月份(月份是从0开始计数的,因此我们有必要+1)
- int mouth = c.get(Calendar.MONTH);
- //获取天数
- int day = c.get(Calendar.DAY_OF_MONTH);
- System.out.printf("%d年%d月%d日\n",year,mouth+1,day);
- }
- }
- /*
- 以上代码执行结果如下:
- 2017年7月12日
- */
5>.getTime方法
把日历对象转换成Date日期对象。
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.util.Calendar;
- import java.util.Date;
- public class CalendarDemo {
- public static void main(String[] args) {
- Calendar c = Calendar.getInstance();
- Date date = c.getTime();
- System.out.println(date);
- }
- }
- /*
- 以上代码执行结果如下:
- Wed Apr 18 17:54:17 GMT+08:00 2018
- */
三.小试牛刀
1>.求出自己已经出生多少天
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- public class DateDemo {
- public static void main(String[] args) throws ParseException {
- function();
- }
- public static void function() throws ParseException {
- //获取出生日期,从键盘输入
- while(true) {
- System.out.print("请输入你的出生日期(格式:yyyy-MM-dd):>>>");
- String birthdayString = new Scanner(System.in).nextLine();
- if(birthdayString.equals("exit")) {
- System.exit(0);
- }
- //创建SimpleDateFormat对象,并传入日期格式
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- //将字符串日期,转成Date对象,需要调用parse方法。
- Date birthdayDate = sdf.parse(birthdayString);
- //获取今天的日期对象
- Date todayDate = new Date();
- //将两个日期转换成毫秒值,Date类的方法getTime
- long birthdaySecond = birthdayDate.getTime();
- long todaySecond = todayDate.getTime();
- long day = (todaySecond - birthdaySecond)/1000/3600/24;
- if(day<0) {
- System.out.println("你还没有出生呢!");
- }else {
- System.out.println("你已经出生了:"+day+" 天啦!");
- }
- }
- }
- }
以上代码测试情况如下:
2.计算闰年
- /*
- @author :yinzhengjie
- Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
- EMAIL:y1053419035@qq.com
- */
- package cn.org.yinzhengjie.Demo;
- import java.text.ParseException;
- import java.util.Calendar;
- import java.util.Scanner;
- import java.util.regex.Pattern;
- public class DateDemo {
- public static void main(String[] args) throws ParseException {
- Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
- while(true) {
- System.out.print("请输入你想要计算的年份(格式:YYYY)\":>>>");
- String input = new Scanner(System.in).nextLine();
- if(input.length() == 0) { //判断用户输入的是否为整数。
- continue;
- }else if(input.equals("exit")) {
- System.exit(0);
- }else if(pattern.matcher(input).matches()) {
- int year = Integer.valueOf(input).intValue();
- function(year);
- }else {
- System.out.println("请输入年份(格式:YYYY)");
- }
- }
- }
- public static void function(int year) throws ParseException {
- Calendar c = Calendar.getInstance();
- //将日历设置到指定年的3月1日
- c.set(year, 2,1);
- //日历add方法,向前偏移1天
- c.add(Calendar.DAY_OF_MONTH, -1);
- //get方法获取天数
- int day = c.get(Calendar.DAY_OF_MONTH);
- if(day == 29) {
- System.out.printf("%d年的二月份有%d天,是闰年!\n",year,day);
- }else {
- System.out.printf("%d年的二月份有%d天,是平年!\n",year,day);
- }
- }
- }
以上代码测试结果如下:
Java基础-Calendar类常用方法介绍的更多相关文章
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- java基础-BigInteger类常用方法介绍
java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...
- java基础-Arrays类常用方法介绍
java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...
- java基础-Math类常用方法介绍
java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...
- java基础-System类常用方法介绍
java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...
- java基础-Integer类常用方法介绍
java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
- java基础-Eclipse开发工具介绍
java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...
- java基础-Idea开发工具介绍
java基础-Idea开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前给大家介绍过一款Java的IDE叫eclipse,有些功能用起来不是很得心应手,尤其是在导报的 ...
随机推荐
- 奔跑吧DKY——团队Scrum冲刺阶段-Day 1-领航
各个成员在 Alpha 阶段认领的任务 修改 序号 修改 具体描述 1 游戏过程 取消原来的跳跃和俯身按钮,保留跳跃的功能,可以触屏滑动来躲避地面障碍物,也可以躲避另一种陷阱障碍物 2 闯关功能 取消 ...
- Mysql常用配置及优化
[client]# 该目录下的内容常用来进行localhost登陆,一般不需要修改port = 3306 # 端口号socket = /var/lib/mysql/mysql.sock # 套接字文件 ...
- Ubuntu下开启mysql远程访问
1. 开启数据库3306端口 首先,使用如下指令查看3306端口是否对外开放. netstat -an | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LIS ...
- Chapter 10 软件测试
软件测试是软件质量保证的一项关键活动,验证与确认是贯穿软件生命周期的规范化评估方法.软件验证则试图证明在软件生存的各个阶段是否满足客户的需求,软件确认是一系列的活动和过程,两个活动相互独立但却相辅相成 ...
- jquery-numberformatter插件
项目地址:https://code.google.com/p/jquery-numberformatter/ 非jquery版:https://github.com/andrewgp/jsNumber ...
- Beta阶段团队项目开发篇章3
例会时间 2016.12.6晚 例会照片 个人工作 上阶段任务验收 中英文切换功能已经实现,调查结果分析已经完成,博客基本撰写完成,在征求其他组员意见后发布.任务基本完成. 任务分配 组员 任务内容 ...
- js异步上传图片
<!DOCTYPE html><html xmlns = "http://www.w3.org/1999/xhtml" ><head><m ...
- 使用Fiddler后谷歌浏览器访问https不安全
今天初次接触java爬虫,师兄给了一个软件加一个demo,软件是Fiddler,在网上找资料稍微学习了一下,自己一顿乱配...然后gg,谷歌浏览器访问https协议时都提示不安全,“您的链接不是一个私 ...
- ucontext-人人都可以实现的简单协程库
ucontext的介绍 http://blog.csdn.net/qq910894904/article/details/41911175 协程的介绍 https://en.wikipedia.org ...
- DispatcherServlet的url mapping为“/”时,对根路径访问的处理
背景 众所周知,Tomcat的Default Servlet的servlet-mapping为 <servlet-mapping> <servlet-name>default& ...