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。。。

猜你喜欢

转载自blog.csdn.net/qq_34465338/article/details/129264538