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

java篇42-java的时间日期类(Date类、DateFormat类、SimpleDateFormat、Calendar类) 由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat,这个类需要一个模式(格式)来指定格式化或解析的标准。答案是使用Calendar类。java.text.DateFormat是日期/时间格式化子类的抽象类,可以通过这个类来完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。(4)public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。 阅读详情
AI摘要

本文介绍了Java中的Calendar类,包括如何获取Calendar实例,以及使用get,set和add方法操作日期和时间。get方法用于获取日历字段的值,set方法用于设置日历字段的值,add方法则进行日期和时间的加减操作。此外,还讨论了如何使用Calendar进行日期输出的格式化。

目录

引言

一,Calendar类

二Calendar类的常用方法

2.1,get()方法

2.2,set()方法

2.3,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入门第101课——Calendar调用set方法设置日期分量 码字不易,请大家关注公众号,转发,点赞,只需动动手指,不要钱,谢谢了老铁! 问题 在上一案例的基础上,使用Calendar类的set方法设置日期-时间的各个分量,详细要求如下: 1)使用Calendar类表示时间,设置日期为2013年12月25日,时间为此时此刻的时间,并将该日期-时间转换为Date类输出。 2)修改Calendar类的对象,将日期中的日设置为3... 阅读详情

相关推荐

Java使用Calendar类的get方法获取日期和时间信息

在Java中,我们可以使用Calendar类的get方法来获取日期和时间信息。Calendar类是Java提供的一个用于操作日期和时间的类,它提供了各种方法和字段来获取和设置日期和时间的各个部分,例如年、月、日、小时、分钟、秒等。这就是使用Java的Calendar类的get方法来获取日期和时间信息的方法。通过使用Calendar类,我们可以方便地操作和获取日期和时间的各个部分,以满足各种需求。通过运行上述代码,我们可以获取到当前的年份、月份、日期、小时、分钟和秒钟的信息,并将其打印到控制台上。

UtdPatch的博客 476

Calendar类set()方法的“陷阱”

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

freelk的博客 4万+

Java入门第100课——Calendar的getInstance方法

不知不觉到第100课了,码字真的累,写完后还要反复检查是否有笔误,以免对大家造成困扰。 后面还有好多课时,真的是从零基础开始,一直到框架。 不知能不能坚持写完,关注的人越多更的越快。 最近更的比较快是因为有存货,存货还能撑50课的样子。 一天不吃不喝最多也就写10个课时。 有点啰嗦了,有什么想法给我留言吧。 问题 Calendar类是一个抽象类,它为特定瞬间与一组诸如YE...

Java学习博客 3862

Calendar.getInstance()用法

Calendar.getInstance的简单使用

m0_63926154的博客 7974

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (上篇)(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1603

AI+AB测试提升电商主图点击率实战指南

在电商运营中,主图点击率(CTR)是衡量商品吸引力的核心指标,直接影响转化率和订单增长。通过AI技术批量生成高质量主图素材,结合数据驱动的AB测试方法,可以显著提升点击率。AI工具如MidJourney和Stable Diffusion能够快速生成多样化视觉方案,而自动化处理流水线则确保素材规格统一。AB测试体系通过多维变量控制和流量分配策略,科学验证不同素材效果。这种方法特别适用于需要快速迭代的电商场景,某女装店铺案例显示CTR从1.2%提升至3.8%,验证了AI+数据协同优化的技术价值。

weixin_29058331的博客 298

Calendar类常用方法

概念 java.util.Claendar日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法,该类将所有的可能用到的时间信息封装为静态成员变量,通过类名.静态成员变量获取时间字段值 获取方式 由于Calendar类是一个抽象类,语言敏感性,Calendar类并不是直接创建对象来获取时间属性值,而是通过静态方法创建,返回子类对象。 静态方法如下: public static Calendar getInstance();使用默认时区和默认的语言环境获取一个对象 ...

Outsider_in的博客 1087

人工智能在高中教育中的应用现状剖析与挑战应对

人工智能在高中教育中的应用现状剖析与挑战应对

燕鹏 1338

JDK源码(二十三):Calendar

java.util.Calendar类是一个抽象类,它提供了在特定的时间戳和一组Calendar字段之间进行转换的方法,例如年,月,日,小时等等,以及用于操作日历字段的方法,比如下星期的日期。时间的戳可以用毫秒值表示,该值是从1970年1月1日格林尼治标准时间00:00:00.000(公历)开始的偏移量。该类还提供了用于在包外实现具体日历系统的其他字段和方法。这些字段和方法被定义为protected。 Calendar对象可以生成实现特定语言和日历样式的日期时间格式所需的所有日历字段值。Calendar定

u011175079的博客 576

数电发票“乐企直连”服务平台建设方案

数字化电子发票“乐企直连”服务平台建设方案

m0_73174802的博客 4851

【法如faro】三维激光软件Scene2023数据处理(自动配准并转换坐标)流程

法如faro Scene2023数据处理(自动配准并转换坐标)的主要流程为:新建项目、导入数据、处理、自动注册、坐标系转换、模型导出立和面模型导出等。

智慧空间实验室 2382

Java 常用类---JDK8之前日期时间API

1. java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 (此方法适于计算时间差。) //1.System类中的currentTimeMillis() @Test public void test1(){ long time = System.currentTimeMillis(); //返回当前时间与

ZgaoYi的博客 303

HBase学习二:RegionServer详解

RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数据写入的可靠性;BlockCache可以将数据块缓存在内存中以提升数据读取性能;

qwerty1372431588的博客 747

Java—java.util.calendar类详解

目录 一、概述 二、静态常量 三、静态方法 四、实例 五、GregorianCalendar类 一、概述 java.util.Calendar类是一个抽象类,是java日期处理的核心类之一。Calendar类为操作日历字段,及其与特定瞬间之间的转换提供了方法。日历字段包含YEAR、MONTH、DAY_OF_MONTH、HOUR等,它们都是Calendar类的静态常量。 二、静态常量...

雷雨天的雷胖子 1万+

被搜狗输入法背刺了!偷偷装的 “AI 汪仔” 狂占 CPU!手把手教你如何彻底关闭删除搜狗AI功能AI汪仔

手把手教你如何彻底关闭删除搜狗输入法的AI汪仔🚀

XiaoqiangClub的博客 2万+

DeepSeek赋能公文写作指南(一)

DeepSeek 的出现,为公文写作领域带来了新的曙光。作为先进的人工智能技术,DeepSeek 以其强大的语言理解与生成能力,能为公文写作提供全方位的支持。它可以快速梳理思路,提供丰富的素材参考,辅助优化语言表达,甚至能根据不同的公文类型和场景,生成极具价值的内容框架。《DeepSeek 赋能公文写作指南》正是基于此背景应运而生。本书旨在帮助公文写作者深入了解并充分利用 DeepSeek 这一强大工具,将其融入到公文写作的各个流程中。

通俗易懂学IT 5482

Java日历类:Calendar类

1.获取时间 //Calendar实例化 Calendar cal = Calendar.getInstance(); cal.get(Calendar.DATE);//-----------------------当天 1-31 cal.get(Calendar.DAY_OF_MONTH);//---------------当天 1-31 ,这个相对而言会比较准确 cal.get(Calendar.DAY_OF_WEEK);//----------------从星期天开始计算,如果今天星期二,那么返回3

xueguchen的博客 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于时间的类 Calendar类

1 前言: Calendar类和Date类都是解决时间相关问题的,在使用过程中也存在相同之处和不同之处,这次我们主要说说Calendar类 1.1简单介绍:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。 2相关api 方法 说明 static Calendar getInstance() 使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。如下所示:

jothan的博客 279

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Calendar类——对日期进行操作

Calendar是java中的一个抽象类,抽象类无法直接通过new来创建对象,但是Calendar类内部对外提供了一个getInstance()方法,该方法返回一个Calendar类型的对象,内部封装了当前时间的一些信息。参数要获取的属性,如Calendar.YEAR、Calendar.DAY_OF_YEAR等。从控制台输出的结果来看,cl对象包含了当前时间的时间戳,以及将时间分析成具体的属性值。参数一要添加的属性,如Calendar.YEAR、Calendar.MONTH等。参数一要设置的属性。...

liangxiuqingfen的博客 6941

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Calendar类[java]

Calendar类概述、Calender类的实例化、常用成员方法、日历字段、Calendar类的缺点

m0_58450531的博客 1449

java calendar field_Java Calendar详解

一:字段和方法的信息YEAR 字段:public static final int YEAR ;指示年的 get 和 set 的字段数字。这是一个特定于日历的值;get 方法:public int get(int field) ;返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,...

weixin_26968079的博客 1173

[Java] Calendar类

Calendar日历类的使用 首先我们要知道日历类是一个抽象类 那么既然是一个抽象类,我们肯定是要通过创建其子类的对象了实现这个抽象类中的一些方法 日历类(Calender类)的实例化: 方式一: 我们直接创建其子类的对象 (也就是创建一个GregorianCalendar类的对象) java中提供了Calender类的一个子类:GregorianCalendar 方式二: 我们也可以通过调用Calendar类中的getInstance()静态方法 我们通过调用Calendar类中的getI

m0_57001006的博客 406

【Java】Calendar类

方法 作用 public static Calendar getInstance(TimeZone zone,Locale aLocale) 使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。如下所示:Calendar cr=Calendar.getInstance(); public void set(int year,int month,int date,int hourofday,int minute,int second) 设置日历的年、月、日、时、分、秒。 ...

SuperSources的博客 254

Java Calendar类深度解析:从核心原理到实战避坑指南

在Java开发中,日期时间处理是基础且关键的技术环节,尤其在维护遗留系统和理解时间处理演进时更为重要。其核心原理基于字段化模型,将日期时间分解为年、月、日等独立字段进行操作,这种设计提供了灵活性但也引入了可变性和月份从0开始等经典陷阱。从技术价值看,掌握Calendar类不仅能高效处理排班、财务周期、促销倒计时等常见业务场景,更是理解Java时间API发展脉络的关键。本文聚焦Calendar类的工厂模式设计、add与roll的微妙差异、日期计算规范化以及线程安全等核心议题,通过解析日期比较、时区处理和性能优

weixin_34246551的博客 490

Java Calendar类深度解析:历史遗留类的核心缺陷与现代API迁移指南

在Java编程中,日期时间处理是基础且关键的技术领域。其核心原理涉及时间的表示、计算与时区转换。传统的java.util.Calendar类虽然提供了日期字段操作和计算功能,但其可变性设计导致线程安全问题,反直觉的API(如月份从0开始)增加了开发复杂度。从技术价值看,理解Calendar有助于处理遗留系统代码和掌握日期时间处理的演进脉络。在实际应用场景中,开发者常需维护使用Calendar的老项目,或应对相关面试问题。本文聚焦Calendar的线程安全陷阱、月份常量混淆等高频问题,并对比现代java.ti

weixin_34152820的博客 1195
上一篇: JAVA接口类-interface
下一篇: JAVA关键字-static,以及static应用(代码块)
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值