Java学习记录07

时间类

由于时间类涉及的类较多,这里会分别用文章进行展示,这篇文章主要展示Date和Calendar类的方法。

Date

1.静态方法

Date.from(Instant instant)

从 Instant 对象获取 Date 的实例。

//Java中的Instant类是时间API的一部分,它代表了一个时间戳,精确到纳秒,是时间点的瞬时不完整表示。
Date from = Date.from(Instant.now());    //2024-11-14T06:59:53.647836600Z
System.out.println(from);    //Thu Nov 14 14:59:53 GMT+08:00 2024

2.实例方法

date.after(Date when)

测试此日期是否在指定日期之后。

public static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
public static Date stringToDate(String time) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat(Constants.FORMAT);
    Date date = sdf.parse(time);
    return date;
}

Date date1 = MyTool.stringToDate("2024-11-14 14:44:00");
Date date2 = MyTool.stringToDate("2024-11-14 21:40:55");
boolean after = date1.after(date2);
System.out.println(after); //false
date.before(Date when)

测试此日期是否早于指定日期。

Date date1 = MyTool.stringToDate("2024-11-14 14:44:00");
Date date2 = MyTool.stringToDate("2024-11-14 21:40:55");
boolean before = date1.before(date2);
System.out.println(before);  //true
date.compareTo(Date anotherDate)

比较两个日期以进行排序。

Date date1 = MyTool.stringToDate("2024-11-14 14:44:00");
Date date2 = MyTool.stringToDate("2024-11-14 21:40:55");
int i = date1.compareTo(date2);
System.out.println(i); //-1
date.equals(Object obj)

比较两个日期是否相等。

Date date1 = MyTool.stringToDate("2024-11-14 14:44:00");
Date date2 = MyTool.stringToDate("2024-11-14 14:44:00");
boolean equals = date1.equals(date2);
System.out.println(equals);  //true
date.setTime(long time)

设置此 Date 对象以表示格林威治标准时间 1970 年 1 月 1 日 00:00:00 后 time 毫秒的时间点。

Date date = new Date();
date.setTime(1000);
System.out.println(date);   //Thu Jan 01 08:00:01 GMT+08:00 1970
date.toString()

将此 Date 对象转换为以下形式的 String

Date date = new Date();
String string = date.toString();
System.out.println(string); //Thu Nov 14 15:34:39 GMT+08:00 2024

Calendar

Calendar就是系统给定的一个当前时间信息集合体,我们使用的方法只是去获取当前信息。

1.静态方法

Calendar.getAvailableCalendarTypes()

返回一个不可修改的 Set,其中包含运行时环境中 Calendar 支持的所有日历类型。

Set<String> availableCalendarTypes = Calendar.getAvailableCalendarTypes();
for (String availableCalendarType : availableCalendarTypes) {
    System.out.println(availableCalendarType);    //japanese buddhist gregory
}
Calendar.getAvailableLocales()

返回一个包含所有locale的数组,此类的 getInstance 方法可以为其返回本地化实例。

//Locale类是用来国际化数据的
//每一个locale对象都代表一个特定的的确,政治文化,地区和创建方法
Locale[] availableLocales = Calendar.getAvailableLocales();
for (Locale availableLocale : availableLocales) {
    System.out.println(availableLocale);    //he th_TH_#Thai nds tk_TM_#Latn...
}
Calendar.getInstance()

使用默认时区和locale获取日历。

Calendar instance = Calendar.getInstance();
System.out.println(instance);
        /**
        * java.util.GregorianCalendar[time=1731570545285,areFieldsSet=true,areAllFieldsSet=true,lenient=true,
         * zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,
         * minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=14,DAY_OF_YEAR=319,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,
         * AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=49,SECOND=5,MILLISECOND=285,ZONE_OFFSET=28800000,DST_OFFSET=0]
        * */

2.实例方法

calendar.add(int field, int amount)
Calendar instance = Calendar.getInstance();
instance.add(Calendar.YEAR, 1);
System.out.println(instance.get(Calendar.YEAR)); //今年是2024年 加1年就是2025年
calendar.after(Object when)

返回此 Calendar 是否表示指定 Object 表示的时间之后的时间。

Locale locale = new Locale("en", "US");
Calendar cal = Calendar.getInstance();        //time=1731582854710
Calendar cal2 = Calendar.getInstance(locale);   //time=1731582854717
boolean after = cal.after(cal2);
System.out.println(after); //false
calendar.before(Object when)

返回此 Calendar 是否表示指定 Object 表示的时间之前的时间。

Locale locale = new Locale("en", "US");
Calendar cal = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance(locale);
boolean before = cal.before(cal2);
System.out.println(before);  //true
calendar.clear()

将此 Calendar 的所有日历字段值和时间值(与 时代 的毫秒偏移量)设置为未定义。

Calendar cal = Calendar.getInstance();
cal.clear();
System.out.println(cal);    //time=?,areFieldsSet=false,YEAR=?,MONTH=?...
calendar.compareTo(Calendar anotherCalendar)

比较由两个 Calendar 对象表示的时间值(与 时代 的毫秒偏移量)。

Locale locale = new Locale("en", "US");
Calendar cal = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance(locale);
int i = cal.compareTo(cal2);
System.out.println(i); //-1
calendar.get(int field)

返回给定日历字段的值。

//field 就是打印Calendar.getInstance()所展现出来的信息。
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
System.out.println(year); //2024

calendar.getCalendarType()

返回此 Calendar 的日历类型。

Calendar cal = Calendar.getInstance();
String calendarType = cal.getCalendarType();
System.out.println(calendarType); //gregory

calendar.getTime()

返回表示此Calendar的时间值的Date对象(与时代的毫秒偏移量)。

Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
System.out.println(time);   //Thu Nov 14 19:31:36 GMT+08:00 2024

calendar.getTimeMuillis()

以毫秒为单位返回此日历的时间值。

Calendar calendar = Calendar.getInstance();
long timeInMillis = calendar.getTimeInMillis();
System.out.println(timeInMillis); //1731583955788

calendar.getTimeZone()

获取时区。

Calendar calendar = Calendar.getInstance();
TimeZone timeZone = calendar.getTimeZone();
System.out.println(timeZone.getID()); //GMT+08:00

calendar.getWeeksInWeekYear()

返回此Calendar表示的周年中的周数。

Calendar calendar = Calendar.getInstance();
int weeksInWeekYear = calendar.getWeeksInWeekYear();
System.out.println(weeksInWeekYear); //52 今年一共有52周

calendar.getWeekYear()

返回由此calendar表示的星期年。

Calendar calendar = Calendar.getInstance();
int weekYear = calendar.getWeekYear();
System.out.println(weekYear); //2024

calendar.set(int field,int value)

将给定的日历字段设置为给定的值。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1971);
int i = calendar.get(Calendar.YEAR);
System.out.println(i); //1971 单个设置年份只改变了年份,其他还是当前日期,time这个字段变为了time=?

calendar.setTime(Date date)

使用给定的 Date 设置此日历的时间。

Calendar calendar = Calendar.getInstance();
Date date = MyTool.stringToDate("2024-11-14 14:44:00");
calendar.setTime(date);
System.out.println(calendar); // DAY_OFMONTH=14 HOUR=2 time=1731566640000

calendar.toString()

返回此日历的字符串表示形式。

//java.util.GregorianCalendar[time=1731584938901,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=14,DAY_OF_YEAR=319,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=48,SECOND=58,MILLISECOND=901,ZONE_OFFSET=28800000,DST_OFFSET=0]
Calendar calendar = Calendar.getInstance();
String string = calendar.toString();
System.out.println(string); //信息如上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值