当前位置: 首页 > news >正文

JPA——Date拓展之Calendar

Java Calendar 是时间操作类,Calendar 抽象类定义了足够的方法,在某一特定的瞬间或日历上,提供年、月、日、小时之间的转换提供方法

一、获取具体时间信息

1. 当前时间

获取此刻时间的年月日时分秒

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
//输出时间2023年2月28日

2. 指定时间

使用自定义时间或者某个请求中的时间
a)使用date类

//查看源码可以发现,year= year + 1900,month = month + 1
Date date = new Date(123, 1, 28,14,28,0);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
//输出时间2023年2月28日

b)使用calendar类

Calendar calendar = Calendar.getInstance();
calendar.set(2023,2,28,14,36,0);
int year = calendar.get(Calendar.YEAR);
//这里指定了月份,所以不需要+1
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
//输出时间2023年2月28日

二、指定偏移量时间

可以指定出任意一段时间

//当前时间2023-2-28
Calendar calendar = Calendar.getInstance();
//3年前
calendar.add(Calendar.YEAR, -3);
//2月后
calendar.add(Calendar.MONTH, +2);
//7天后(默认每个月30天)
calendar.add(Calendar.DAY_OF_YEAR, 7);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
//输出时间2020年4月5日

三、时区使用

可以设置时区

Calendar calendar = Calendar.getInstance();
//表示东一区
TimeZone timeZone = TimeZone.getTimeZone("GMT+1");
calendar.setTimeZone(timeZone);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DATE);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println(year + "年" + month + "月" + day + "日" + hour + "时");
//输出时间2023年2月28日7时(当前时间2023年2月28日14时)//表示西一区
TimeZone timeZone = TimeZone.getTimeZone("GMT-1");
//输出时间2023年2月28日5时(当前时间2023年2月28日14时)//互联网时间
TimeZone timeZone = TimeZone.getTimeZone("GMT");
//输出时间2023年2月28日6时(当前时间2023年2月28日14时)

四、Calendar类中的静态常量

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE当前时间为多少号(日历式的多少号)
Calendar.HOUR小时(12小时制)
Calendar.HOUR_OF_DAY小时(24小时制)
Calendar.MINUTE分钟数
Calendar.SECOND秒数
Calendar.MILLENSECOND毫秒数
Calendar.WEEK_OF_MONTH当前时间是所在月的第几个星期(日历式的第几周)
Calendar.WEEK_OF_YEAR当前时间是所在当前年的第几个星期
Calendar.DAY_OF_WEEK_IN_MONTH当前时间是所在月的第几个星期,以月份天数为标准,一个月的1号为第一周,8号为第二周
Calendar.DAY_OF_WEEK一周七天中,当前时间是一周中的第几天(星期天为第一天)
Calendar.DAY_OF_YEAR一年中的第几天
Calendar.DAY_OF_MONTH一个月中的第几天,结果等同于Calendar.DATE
Calendar.AM_PM上午还是下午(0表示上午,1表示下午)

五、Calendar类中的常用方法

方法描述
Calendar getInstance获得一个日历对象(重要)
Date getTime返回当前时间
long getTimeInMillis返回当前时间毫秒值
void setTimeInMillis(long millis)用毫秒值设置Calendar的时间
int get(int field)获得给定时间域的值(如:Calendar.DATE)
void set(int field, int value)用给定的值设置时间域
void clear()清除所有的时间域
void clear(int field)清除指定时间域的值
set(int year, int month,int date,int hour,int minute,int second)设置年、月、日、时、分、秒域的数值
void complete()填充时间域列表中所有未设置的域
boolean equals(Object obj)比较该日历和指定的对象
boolean before(Object when)比较时间域大小
boolean after(Object when)比较时间域大小
void add(int field,int amount)将指定 ( 带符号的 ) 数量的时间添加到给定的时间域
void roll(int field,boolean up)在给定的时间域上 ( 向上true / 向下false ) 滚动一个时间单元
void setTimeZone(TimeZone value)用给定的时区值设置时区
TimeZone getTimeZone()获得当前时区
void setMinimalDaysInFirstWeek(int value)设置该年中第一个星期所需要的最少的天数。例如,如果定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。如果它必须是一个完整的星期,使用 7 调用该方法
int getMinimalDaysInFirstWeek()原理同上
int getMinimum(int field)获得给定时间域最小值,如对于DAY_OF_MONTH最小值为1(1号)
int getMaximum(int field)获得给定时间域最大值,如对于DAY_OF_MONTH最小值为31(31号)
String toString()返回日历的字符串表示

六、Calendar转化为Date

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(dateFormat.format(date));

注意项:\color{red}{注意项:}注意项:
month 是从0开始的,也就是全年月份是0 ~ 11;
DAY_OF_WEEK 是从星期天开始的,也就是星期一是2,星期二是3。。。

http://www.lryc.cn/news/24185.html

相关文章:

  • 一文吃透 Spring 中的 AOP 编程
  • Apple主推的智能家居是什么、怎么用?一篇文章带你从零完全入门 HomeKit
  • SpringCloud系列知识快速复习 -- part 1(SpringCloud基础知识,Docker,RabbitMQ)
  • 2023上半年北京/上海/广州/深圳NPDP产品经理认证报名
  • 面试半年,总结了1000道2023年Java架构师岗面试题
  • 通过MySQL驱动拦截器实现执行sql耗时计算
  • 易基因|独家分享:高通量测序后的下游实验验证方法——DNA甲基化篇
  • java基础系列(七) 同步和异步理解
  • 吉林大学 程序设计基础 2022级 OJ期末考试 2.23
  • 【项目实战】SpringMVC拦截器实战 - 自定义拦截器防止重复提交
  • C++ STL:容器 Container
  • urllib之urlopen和urlretrieve的headers传入以及parse、urlparse、urlsplit的使用
  • 【C++】二叉搜索树的模拟实现
  • HNU工训中心:元器件及测量基础实验报告
  • 博客系统--自动化测试
  • Day903.自增主键不能保证连续递增 -MySQL实战
  • 02-MyBatis查询-
  • 外盘国际期货招商:2023年3月关注日历,把握重要投资机会
  • Linux学习(9.1)文件系统的简单操作
  • Hadoop综合案例 - 聊天软件数据
  • Python进阶-----面向对象1.0(对象和类的介绍、定义)
  • 天猫淘宝企业服务为中小微企业打造供应链智能协同网络,让采购不再将就!丨爱分析报告
  • 基于四信网络摄像机的工业自动化应用
  • 软件测试2
  • (二分查找)leetcode162. 寻找峰值
  • spring boot 配合element ui vue实现表格的批量删除(前后端详细教学,简单易懂,有手就行)
  • hiveSQL开窗函数详解
  • 深度学习基础实例与总结
  • 在 WIndows 下安装 Apache Tinkerpop (Gremlin)
  • 从软件的角度看待PCI和PCIE(一)