JAVA时间戳-Calendar类使用(包括set,get,add方法)

 更新时间:2024年04月15日 09:56:25   作者:冰冰很社恐  
这篇文章主要介绍了JAVA时间戳-Calendar类使用(包括set,get,add方法),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

一、Calendar类

想要取得时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:

Calendar c = Calendar.getInstance();

创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。

getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。

Calendar 类中定义了许多常量,分别表示不同的意义。

  • Calendar.YEAR:年份。
  • Calendar.MONTH:月份。
  • Calendar.DATE:日期。
  • Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
  • Calendar.HOUR:12小时制的小时。
  • Calendar.HOUR_OF_DAY:24 小时制的小时。
  • Calendar.MINUTE:分钟。 Calendar.SECOND:秒。
  • Calendar.DAY_OF_WEEK:星期几。

二、Calendar类的常用方法

2.1 get()方法

获取值

cal.get(Calendar.YEAR);//年
cal.get(Calendar.MONTH) + 1;//月(Calendar在月份上的常数值从0开始的)
cal.get(Calendar.DATE);//日
cal.get(Calendar.HOUR_OF_DAY);//时
cal.get(Calendar.MINUTE);//分
cal.get(Calendar.SECOND);//秒
cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1)
cal.get(Calendar.DAY_OF_WEEK);//获取当前是一周中的第几天(从0开始计算)
cal.get(Calendar.DAY_OF_MONTH);//获取当前是一月的第几天
cal.get(Calendar.DAY_OF_YEAR);//获取当前时一年中的第几天

示例代码如下:

public class CalandarTest {
    public static void main(String[] args) {
        Calendar cal=Calendar.getInstance();
        //获取当前年
        int year= cal.get(Calendar.YEAR);
        System.out.println(year);
        //获取当前月(从0开始计算)
        int month= cal.get(Calendar.MONTH);
        System.out.println(month);
        //获取当前日
        int date= cal.get(Calendar.DATE);
        System.out.println(date);
        //获取当时小时
        int hour= cal.get(Calendar.HOUR);
        System.out.println(hour);
        //获取当前分钟数
        int minute= cal.get(Calendar.MINUTE);
        System.out.println(minute);
        //获取当前秒数
        int second= cal.get(Calendar.SECOND);
        System.out.println(second);
        //获取当前是一周中的第几天(从0开始计算)
        int wday= cal.get(Calendar.DAY_OF_WEEK);
        System.out.println(wday);
        //获取当前是一月的第几天
        int mday= cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(mday);
        //获取当前时一年中的第几天
        int yday= cal.get(Calendar.DAY_OF_YEAR);
        System.out.println(yday);
    }
}

2.2 set()方法

设置值(返回为日期对象)

cal.set(2023, 7, 15, 9, 44, 51);//年月日时分秒(月份0代表1月)
cal.set(Calendar.YEAR, 2023);//年
cal.set(Calendar.MONTH, 7);//月(月份0代表1月)
cal.set(Calendar.DATE, 11);//日
cal.set(Calendar.HOUR_OF_DAY, 15);//时
cal.set(Calendar.MINUTE, 33);//分
cal.set(Calendar.SECOND, 32);//秒

示例代码如下:

public class CalandarTest {
    public static void main(String[] args) {
        Calendar cal=Calendar.getInstance();
        //设置当前年
        cal.set(Calendar.YEAR,2022);
        System.out.printf("%tY%n",cal);
        //设置当前月(从0开始计算)
        cal.set(Calendar.MONTH,5);
        System.out.printf("%tm%n",cal);
        //设置当前日
        cal.set(Calendar.DATE,5);
        System.out.printf("%td%n",cal);
        //设置当时小时
        cal.set(Calendar.HOUR,14);
        System.out.printf("%tl%n",cal);
        //设置当前分钟数
        cal.set(Calendar.MINUTE,50);
        System.out.printf("%tM%n",cal);
        //设置当前秒数
        cal.set(Calendar.SECOND,12);
        System.out.printf("%tS%n",cal);
    }
}

输出结果如下:

2.3 add()方法

运算值(在获取的当前时间进行运算,返回值为日期对象)

cal.add(Calendar.YEAR, 1);//年
cal.add(Calendar.MONTH, 1);//月
cal.add(Calendar.DATE, 1);//日
cal.add(Calendar.HOUR_OF_DAY, -1);//时
cal.add(Calendar.MINUTE, 1);//分
cal.add(Calendar.SECOND, 1);//秒
cal.add(Calendar.DATE, 7);//周

示例代码如下:

public class CalandarTest {
    public static void main(String[] args) {
        Calendar cal=Calendar.getInstance();
        //以当前年计算
        cal.add(Calendar.YEAR,2022);
        System.out.printf("%tY%n",cal);
        //以当前月(月份不从0开始计算)计算
        cal.add(Calendar.MONTH,5);
        System.out.printf("%tm%n",cal);
        //以当前日计算
        cal.add(Calendar.DATE,-5);
        System.out.printf("%td%n",cal);
        //以当时小时小时
        cal.add(Calendar.HOUR_OF_DAY,14);
        System.out.printf("%tl%n",cal);
        //以当前分钟数计算
        cal.add(Calendar.MINUTE,-50);
        System.out.printf("%tM%n",cal);
        //以当前秒数计算
        cal.add(Calendar.SECOND,12);
        System.out.printf("%tS%n",cal);
        
    }
}

输出结果如下:

三、格式化日期输出 

Calendar类返回的时间类型为对象类型,为了方便输出展示,在输出时可以将日期格式化。

转换符说明
%tH小时(00-23)
%tL小时(01-12)
%tk小时(0-23)
%tM分钟(00-29)
%tS秒(00-59)
%tL毫秒(000-999)
%tN微秒(000000000-999999999)
%tp当前语言环境下的上午/下午
%ts从1970-01-01 00:00:00到现在的秒
%tQ从1970-01-01 00:00:00到现在的毫秒
%tF年-月-日
%tT时-分-秒
%tD月/日/年
%tc全部时间日期
%tR时分
%tr时分秒PM

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中sharding-jdbc按年月分片的示例代码

    Java中sharding-jdbc按年月分片的示例代码

    本文主要介绍了Java中sharding-jdbc按年月分片的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 关于Java8 parallelStream并发安全的深入讲解

    关于Java8 parallelStream并发安全的深入讲解

    这篇文章主要给大家介绍了关于Java8 parallelStream并发安全的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 详解基于MVC的数据查询模块进行模糊查询

    详解基于MVC的数据查询模块进行模糊查询

    这篇文章主要介绍了Java基于MVC的数据查询模块进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • SpringBoot中的事务配置管理详解

    SpringBoot中的事务配置管理详解

    这篇文章主要介绍了SpringBoot中的事务配置管理详解,Spring Boot 默认的事务规则是遇到运行异常(RuntimeException)和程序错误(Error)才会回滚,但是抛出SQLException就无法回滚了,需要的朋友可以参考下
    2024-01-01
  • 解析Java并发Exchanger的使用

    解析Java并发Exchanger的使用

    Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用exchange方法之后,会等待另外的线程调用同样的exchange方法。两个线程都调用exchange方法之后,传入的参数就会交换。
    2021-06-06
  • java中常用的阻塞队列与非阻塞队列详解

    java中常用的阻塞队列与非阻塞队列详解

    这篇文章主要介绍了java中常用的阻塞队列与非阻塞队列用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 基于JDBC访问MySql公共方法实例解析

    基于JDBC访问MySql公共方法实例解析

    这篇文章主要介绍了基于JDBC访问MySql公共方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java读取properties配置文件的实现过程

    Java读取properties配置文件的实现过程

    这篇文章主要介绍了Java读取properties配置文件的实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • IDEA创建maven项目时在tomcat运行浏览器404的问题

    IDEA创建maven项目时在tomcat运行浏览器404的问题

    这篇文章主要介绍了IDEA创建maven项目时在tomcat运行浏览器404的问题及解决方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Spring中的REST分页的实现代码

    Spring中的REST分页的实现代码

    本文将介绍在REST API中实现分页的基础知识。我们将专注于使用Spring Boot和Spring Data 在Spring MVC中构建REST分页,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论