Java基础-Calendar类常用方法介绍

                                    作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Calendar类概念

  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

  Calemdar类写了静态方法getInstance() 可以直接返回子类的对象,不需要直接new 子类的对象,通过静态方法直接获取。

二.Calendar类常用方法

1>.getInstance 

  与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.util.Calendar;
  10.  
  11. public class CalendarDemo {
  12. public static void main(String[] args) {
  13. Calendar c = Calendar.getInstance();
  14. System.out.println(c);
  15. }
  16. }
  17.  
  18. /*
  19. 以上代码执行结果如下:
  20. 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]
  21. */

2>.get方法

  Calendar类的get方法,用于获取日历字段的值,返回值的结果也是个int类型的值。

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.util.Calendar;
  10.  
  11. public class CalendarDemo {
  12. public static void main(String[] args) {
  13. Calendar c = Calendar.getInstance();
  14. //获取年份
  15. int year = c.get(Calendar.YEAR);
  16. //获取月份(月份是从0开始计数的,因此我们有必要+1)
  17. int mouth = c.get(Calendar.MONTH);
  18. //获取天数
  19. int day = c.get(Calendar.DAY_OF_MONTH);
  20. System.out.printf("%d年%d月%d日",year,mouth+1,day);
  21.  
  22. }
  23. }
  24.  
  25. /*
  26. 以上代码执行结果如下:
  27. 2018年4月18日
  28. */

3>.set方法

  将给定的日历字段设置为给定值。

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.util.Calendar;
  10.  
  11. public class CalendarDemo {
  12. public static void main(String[] args) {
  13. Calendar c = Calendar.getInstance();
  14. //设置月份,设置10月份(月份是以0开始计数的哟!)
  15. c.set(Calendar.MONTH, 10);
  16. //设置年,月,日
  17. c.set(2099, 4, 19);
  18.  
  19. //获取年份
  20. int year = c.get(Calendar.YEAR);
  21. //获取月份(月份是从0开始计数的,因此我们有必要+1)
  22. int mouth = c.get(Calendar.MONTH);
  23. //获取天数
  24. int day = c.get(Calendar.DAY_OF_MONTH);
  25. System.out.printf("%d年%d月%d日",year,mouth+1,day);
  26.  
  27. }
  28. }
  29.  
  30. /*
  31. 以上代码执行结果如下:
  32. 2099年5月19日
  33. */

4>.add方法

  日历的偏移量,可以指定一个日历中的字段,进行整数的偏移。

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.util.Calendar;
  10.  
  11. public class CalendarDemo {
  12. public static void main(String[] args) {
  13. Calendar c = Calendar.getInstance();
  14. //获取到天数后,如果是负数就向前偏移,如果是正数就向后偏移,此处是获取到当月天数后,会在当前月份的偏移接近10个月)
  15. c.add(Calendar.DAY_OF_MONTH, -280);
  16. //获取年份
  17. int year = c.get(Calendar.YEAR);
  18. //获取月份(月份是从0开始计数的,因此我们有必要+1)
  19. int mouth = c.get(Calendar.MONTH);
  20. //获取天数
  21. int day = c.get(Calendar.DAY_OF_MONTH);
  22. System.out.printf("%d年%d月%d日\n",year,mouth+1,day);
  23. }
  24. }
  25.  
  26. /*
  27. 以上代码执行结果如下:
  28. 2017年7月12日
  29. */

5>.getTime方法

  把日历对象转换成Date日期对象。

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.util.Calendar;
  10. import java.util.Date;
  11.  
  12. public class CalendarDemo {
  13. public static void main(String[] args) {
  14. Calendar c = Calendar.getInstance();
  15. Date date = c.getTime();
  16. System.out.println(date);
  17. }
  18. }
  19.  
  20. /*
  21. 以上代码执行结果如下:
  22. Wed Apr 18 17:54:17 GMT+08:00 2018
  23. */

三.小试牛刀

1>.求出自己已经出生多少天

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.text.ParseException;
  10. import java.text.SimpleDateFormat;
  11. import java.util.Date;
  12. import java.util.Scanner;
  13.  
  14. public class DateDemo {
  15.  
  16. public static void main(String[] args) throws ParseException {
  17. function();
  18. }
  19.  
  20. public static void function() throws ParseException {
  21. //获取出生日期,从键盘输入
  22. while(true) {
  23. System.out.print("请输入你的出生日期(格式:yyyy-MM-dd):>>>");
  24. String birthdayString = new Scanner(System.in).nextLine();
  25. if(birthdayString.equals("exit")) {
  26. System.exit(0);
  27. }
  28. //创建SimpleDateFormat对象,并传入日期格式
  29. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  30. //将字符串日期,转成Date对象,需要调用parse方法。
  31. Date birthdayDate = sdf.parse(birthdayString);
  32. //获取今天的日期对象
  33. Date todayDate = new Date();
  34. //将两个日期转换成毫秒值,Date类的方法getTime
  35. long birthdaySecond = birthdayDate.getTime();
  36. long todaySecond = todayDate.getTime();
  37. long day = (todaySecond - birthdaySecond)/1000/3600/24;
  38. if(day<0) {
  39. System.out.println("你还没有出生呢!");
  40. }else {
  41. System.out.println("你已经出生了:"+day+" 天啦!");
  42. }
  43. }
  44.  
  45. }
  46. }

  以上代码测试情况如下:

2.计算闰年

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.Demo;
  8.  
  9. import java.text.ParseException;
  10. import java.util.Calendar;
  11. import java.util.Scanner;
  12. import java.util.regex.Pattern;
  13.  
  14. public class DateDemo {
  15.  
  16. public static void main(String[] args) throws ParseException {
  17. Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
  18. while(true) {
  19. System.out.print("请输入你想要计算的年份(格式:YYYY)\":>>>");
  20. String input = new Scanner(System.in).nextLine();
  21. if(input.length() == 0) { //判断用户输入的是否为整数。
  22. continue;
  23. }else if(input.equals("exit")) {
  24. System.exit(0);
  25. }else if(pattern.matcher(input).matches()) {
  26. int year = Integer.valueOf(input).intValue();
  27. function(year);
  28. }else {
  29. System.out.println("请输入年份(格式:YYYY)");
  30. }
  31.  
  32. }
  33. }
  34.  
  35. public static void function(int year) throws ParseException {
  36. Calendar c = Calendar.getInstance();
  37. //将日历设置到指定年的3月1日
  38. c.set(year, 2,1);
  39. //日历add方法,向前偏移1天
  40. c.add(Calendar.DAY_OF_MONTH, -1);
  41. //get方法获取天数
  42. int day = c.get(Calendar.DAY_OF_MONTH);
  43. if(day == 29) {
  44. System.out.printf("%d年的二月份有%d天,是闰年!\n",year,day);
  45. }else {
  46. System.out.printf("%d年的二月份有%d天,是平年!\n",year,day);
  47. }
  48. }
  49. }

  以上代码测试结果如下:

Java基础-Calendar类常用方法介绍的更多相关文章

  1. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

  2. java基础-BigInteger类常用方法介绍

    java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...

  3. java基础-Arrays类常用方法介绍

    java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...

  4. java基础-Math类常用方法介绍

    java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...

  5. java基础-System类常用方法介绍

    java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...

  6. java基础-Integer类常用方法介绍

    java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...

  7. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  8. java基础-Eclipse开发工具介绍

    java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...

  9. java基础-Idea开发工具介绍

    java基础-Idea开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前给大家介绍过一款Java的IDE叫eclipse,有些功能用起来不是很得心应手,尤其是在导报的 ...

随机推荐

  1. 奔跑吧DKY——团队Scrum冲刺阶段-Day 1-领航

    各个成员在 Alpha 阶段认领的任务 修改 序号 修改 具体描述 1 游戏过程 取消原来的跳跃和俯身按钮,保留跳跃的功能,可以触屏滑动来躲避地面障碍物,也可以躲避另一种陷阱障碍物 2 闯关功能 取消 ...

  2. Mysql常用配置及优化

    [client]# 该目录下的内容常用来进行localhost登陆,一般不需要修改port = 3306 # 端口号socket = /var/lib/mysql/mysql.sock # 套接字文件 ...

  3. Ubuntu下开启mysql远程访问

    1. 开启数据库3306端口 首先,使用如下指令查看3306端口是否对外开放. netstat -an | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LIS ...

  4. Chapter 10 软件测试

    软件测试是软件质量保证的一项关键活动,验证与确认是贯穿软件生命周期的规范化评估方法.软件验证则试图证明在软件生存的各个阶段是否满足客户的需求,软件确认是一系列的活动和过程,两个活动相互独立但却相辅相成 ...

  5. jquery-numberformatter插件

    项目地址:https://code.google.com/p/jquery-numberformatter/ 非jquery版:https://github.com/andrewgp/jsNumber ...

  6. Beta阶段团队项目开发篇章3

    例会时间 2016.12.6晚 例会照片 个人工作 上阶段任务验收 中英文切换功能已经实现,调查结果分析已经完成,博客基本撰写完成,在征求其他组员意见后发布.任务基本完成. 任务分配 组员 任务内容 ...

  7. js异步上传图片

    <!DOCTYPE html><html xmlns = "http://www.w3.org/1999/xhtml" ><head><m ...

  8. 使用Fiddler后谷歌浏览器访问https不安全

    今天初次接触java爬虫,师兄给了一个软件加一个demo,软件是Fiddler,在网上找资料稍微学习了一下,自己一顿乱配...然后gg,谷歌浏览器访问https协议时都提示不安全,“您的链接不是一个私 ...

  9. ucontext-人人都可以实现的简单协程库

    ucontext的介绍 http://blog.csdn.net/qq910894904/article/details/41911175 协程的介绍 https://en.wikipedia.org ...

  10. DispatcherServlet的url mapping为“/”时,对根路径访问的处理

    背景 众所周知,Tomcat的Default Servlet的servlet-mapping为 <servlet-mapping> <servlet-name>default& ...