时间类
由于时间类涉及的类较多,这里会分别用文章进行展示,这篇文章主要展示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); //信息如上