Java Calendar类使用总结及使用实例

平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与时间。
接下来就讲解下Calendar类的使用场景及使用方法。

1.获取Calendar实例

首先,我们看下Calendar类的定义

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>

因为被定义为abstract,所以我们无法通过new来创建Calendar类的实例,不过Calendar类提供了一个类方法getInstance()来返回Calendar的实例。

public static Calendar getInstance()
{
 return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));
}

由此,获取Calendar实例的代码如下所示:

Calendar calendar = Calendar.getInstance();

2.获取当前时间

package com.zwwhnly.springbootdemo;

import java.util.Calendar;

public class CalendarDemo {
 public static void main(String[] args) {
 Calendar calendar = Calendar.getInstance();

 int year = calendar.get(Calendar.YEAR);
 // 月份的下标是从0开始的,即0~11分别代表1~12月,因此需要+1
 int month = calendar.get(Calendar.MONTH) + 1;
 int day = calendar.get(Calendar.DAY_OF_MONTH);
 int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时制
 int minute = calendar.get(Calendar.MINUTE);
 int second = calendar.get(Calendar.SECOND);

 System.out.println("现在是:" + year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒");
 }
}

运行结果:

现在是:2019年2月21日15时36分38秒

注意:月份的下标是从0开始的,即0~11分别代表1~12月

3.设置时间
假设我们现在需要将时间设置为2019-02-21 23:59:59

3.1(一起设置):

Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.FEBRUARY, 21, 23, 59, 59);

System.out.println(calendar.getTime());

3.2(分别设置):

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2019);
calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.DAY_OF_MONTH, 21);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);

System.out.println(calendar.getTime());

3.1和3.2的运行结果都如下所示:

Thu Feb 21 23:59:59 CST 2019

4.时间计算

4.1增加秒

我们在3.1的基础上增加1秒,那么时间应该是2019-02-22 00:00:00

public static void main(String[] args) {
 Calendar calendar = Calendar.getInstance();
 calendar.set(2019, Calendar.FEBRUARY, 21, 23, 59, 59);
 calendar.add(Calendar.SECOND, 1);
 System.out.println(calendar.getTime());
}

运行结果:

Fri Feb 22 00:00:00 CST 2019

4.2增加月

首先我们将时间设置为2019-01-31,然后先增加1个月,再增加2个月

Calendar calendar = Calendar.getInstance();

calendar.set(2019, Calendar.JANUARY, 31);
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, 1);
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, 2);
System.out.println(calendar.getTime());

运行结果:

Thu Jan 31 15:58:03 CST 2019
Thu Feb 28 15:58:03 CST 2019
Sun Apr 28 15:58:03 CST 2019

注意事项:当所在的月份没有那个日期时,如2月份没有31号,返回的是所在月的最后一天(2月28号)

5.扩展:获取某月的第一天和最后一天

package com.zwwhnly.springbootdemo;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class CalendarDemo {
 public static void main(String[] args) {
 System.out.println(getFirstDayOfMonth(2019, 2));
 System.out.println(getLastDayOfMonth(2019, 2));

 System.out.println(getFirstDayOfMonth(2019, 3));
 System.out.println(getLastDayOfMonth(2019, 3));
 }

 public static String getLastDayOfMonth(int year, int month) {
 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.YEAR, year);
 calendar.set(Calendar.MONTH, month - 1);
 calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));

 return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
 }

 public static String getFirstDayOfMonth(int year, int month) {
 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.YEAR, year);
 calendar.set(Calendar.MONTH, month - 1);
 calendar.set(Calendar.DAY_OF_MONTH, calendar.getMinimum(Calendar.DATE));

 return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
 }
}

运行结果:

2019-02-01
2019-02-28
2019-03-01
2019-03-31

6.参考链接
Java中Calendar类的常用方法Java Calendar类的使用总结java时间类Date、Calendar及用法

以上所述是小编给大家介绍的Java Calendar类使用总结及使用实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Java时间类Date类和Calendar类的使用详解

    起因:写代码的时候经常会用到获取当前时间戳和日期,现总结如下 public void testDate() { //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 Date date = new Date(); String dateString = date.toString(); long times = date.getTime(); System.out.println("date.t

  • Java Calendar类的详解及使用实例

    Java Calendar类的使用总结 在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题,Java中提供了Calendar这个专门用于对日期进行操作的类,那么这个类有什么特殊的地方呢,首先我们来看Calendar的声明 public abstract class Calendar extends Objectimplements Serializ

  • java中Calendar类用法实例详解

    本文实例讲述了java中Calendar类用法.分享给大家供大家参考,具体如下: java中的Calendar在开发中经常被忽略,这篇博客总结一下这个类,对后面项目中使用时期的时候有帮助. Calendar常量(field)的作用 Calendar cal = Calendar.getInstance(); cal.get(Calendar.DATE);//-----------------------当天 1-31 cal.get(Calendar.DAY_OF_MONTH);//------

  • Java Calendar类的使用总结实例

    在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题,Java中提供了Calendar这个专门用于对日期进行操作的类,那么这个类有什么特殊的地方呢,首先我们来看Calendar的声明 public abstract class Calendar extends Objectimplements Serializable, Cloneable, Com

  • Java Calendar类常用示例_动力节点Java学院整理

    Calendar类 从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现.在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用. Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可. 1.使用Calendar类代表当前时间 Calendar c = Calendar.getInstanc

  • Java Calendar类的时间操作

    Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单,演示了获取时间,日期时间的累加和累减,以及比较. 注意事项: Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示. 而 Calendar.DAY_OF_WEEK 定义和值如下: Calendar.SUNDAY = 1 Calendar.MONDAY = 2 Calendar.TUESDAY = 3 Calendar.WEDNESDAY = 4 Calend

  • Java中的日期和时间类以及Calendar类用法详解

    Java日期和时间类简介 Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(

  • Java中Date类和Calendar类的常用实例小结

    前言 写后台程序的时候,经常需要存储当前服务器的时间戳,使用时间戳也很方便,客户端和服务器端都可以根据自己的需求做各自的转换 在php里,获取当前时间戳使用time()函数,格式化输出通过Date()函数即可,Java里相对复杂一些,这里简单介绍一下 Java语言中的Calendar,Date,DateFormat组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分,所有的开发者都应该能计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象 获取UNIX时间戳

  • Java Calendar类使用总结及使用实例

    平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与时间. 接下来就讲解下Calendar类的使用场景及使用方法. 1.获取Calendar实例 首先,我们看下Calendar类的定义 public abstract class Calendar implements Serializable, Cloneable, Comparable<Calen

  • 解决Java Calendar类set()方法的陷阱

    在项目中,需要获取指定年份和月份的最后一天.我在网上找到了一个用Calendar类获取的方法,代码如下: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TestCalendar { public static void main(String[] args) { String s = new SimpleDateFormat("yyyy-MM-dd

  • Java Calendar类使用案例详解

    在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题,Java中提供了Calendar这个专门用于对日期进行操作的类,那么这个类有什么特殊的地方呢,首先我们来看Calendar的声明 public abstract class Calendar extends Objectimplements Serializable, Cloneable, Com

  • Java NumberFormat 类的详解及实例

     Java NumberFormat 类的详解及实例 概要: NumberFormat 表示数字的格式化类, 即:可以按照本地的风格习惯进行数字的显示. 此类的定义如下: public abstract class NumberFormat extends Format MessageFormat .DateFormat .NumberFormat 是 Format 三个常用的子类,如果要想进一步完成一个好的国际化程序,则肯定需要同时使用这样三个类完成,根据不同的国家显示贷币的形式. 此类还是在

  • Java实体类实现链式操作实例解析

    这篇文章主要介绍了Java实体类实现链式操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 原来是这么写bean的,单纯的使用get.set方法,再加一个toString package Model; /** * @author: Davion * @date: 2019/12/11 * @description: */ public class User { private Integer id; private String nam

  • JAVA Calendar类使用方面实例

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

  • java 嵌套类的详解及实例代码

    java 嵌套类 到现在为止,我们都是在Java文件中直接定义类.这样的类出现在包(package)的级别上.Java允许类的嵌套定义. 这里将讲解如何在一个类中嵌套定义另一个类. 内部类 Java允许我们在类的内部定义一个类.如果这个类是没有static修饰符,那么这样一个嵌套在内部的类称为内部类(inner class). 内部类被认为是外部对象的一个成员.在定义内部类时,我们同样有访问权限控制(public, private, protected). 在使用内部类时,我们要先创建外部对象.

随机推荐