zoukankan      html  css  js  c++  java
  • Java基础-Calendar类常用方法介绍

                      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  以上代码执行结果如下:
    21  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]
    22  */

    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          //获取年份
    21         int year = c.get(Calendar.YEAR);
    22         //获取月份(月份是从0开始计数的,因此我们有必要+1)
    23         int mouth = c.get(Calendar.MONTH);
    24         //获取天数
    25         int day = c.get(Calendar.DAY_OF_MONTH);
    26         System.out.printf("%d年%d月%d日",year,mouth+1,day);
    27         
    28     }
    29 }
    30 
    31 /*
    32 以上代码执行结果如下:
    33 2099年5月19日
    34 */

    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日
    ",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天,是闰年!
    ",year,day);
    45         }else {
    46             System.out.printf("%d年的二月份有%d天,是平年!
    ",year,day);
    47         }
    48     }
    49 }

      以上代码测试结果如下:

  • 相关阅读:
    解题报告:hdu1008 Elvator
    解题报告:hdu1003 Max Sum
    解题报告:hdu 1005 number subsequent
    矩阵快速幂
    初步
    学习笔记:矩阵的基本运算的实现
    解题报告:hdu1284 钱币兑换问题
    解题报告:hdu2191汶川地震
    解题报告:hdu1248寒冰王座
    解题报告:hdu2602 Bone collector 01背包模板
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8870958.html
Copyright © 2011-2022 走看看