Java中处理时间,日期的类
1.Calendar类(日历类)
Calendar是java util包下的一个工具类,提供了很方便的不同日期格式的处理。
1.1Calendar类常用属性
属性 | 作用 |
YEAR | 年份 |
MONTH | 月份 |
DATE | 同DAY_OF_MONTH,日期 |
DAY_OF_MONTH | 同DATE,日期 |
DAY_OF_YEAR | 这一天是这一年中的第几天 |
DAY_OF_WEEK_IN_MONTH | 当前月中的第几周 |
DAY_OF_WEEK | 一周中的第几天 / 星期 |
HOUR | 12小时制的时间 |
HOUR_OF_DAY | 24小时制的时间 |
MINUTE | 分钟数 |
SECOND | 秒数 |
MILLISECOND | 毫秒 |
1.2Calendar类的方法
返回值 | 方法 | 作用 |
public static | Calendar getInstance(TimeZone zone,Locale aLocale) | 获得一个日历对象 |
public int | get(int field) | 传入field字段获得给定日历字段的值 |
public final void | set(int year,int month,int date,int hourOfDay,int minute,int second) | 设置日历对象代表的时间 |
public final void | setTime(Date date) | 使用给定的 Date 设置此 Calendar 的时间。 |
public void | setTimeInMillis(long millis) | 用给定的 long 值设置此 Calendar 的当前时间值。 |
public final Date | getTime() | 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 |
public long | getTimeInMillis() | 返回此 Calendar 的时间值,以毫秒为单位。 |
public int | getActualMaximum(int field) | 传入Calendar.Date,得到这个月可能有多少天 |
案例:
public class Demo2 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//获取当前的年份
int i = calendar.get(Calendar.YEAR);
System.out.println(i);//2022
//获取月份 需要加1的
System.out.println(calendar.get(Calendar.MONTH) + 1);//8
//获取当月的第几天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//9
//获取这周的第几天 漂亮国的周日是第1天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//3
//获取这一年的第几天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//221
//获取时
System.out.println(calendar.get(Calendar.HOUR));//4
System.out.println(calendar.get(Calendar.MINUTE));//39
System.out.println(calendar.get(Calendar.SECOND));//3
//重要的方法 获取当前的时间的 返回值是Date类型的数据
//可以转为Date类型的数据
Date time = calendar.getTime();
System.out.println(time);
//Tue Aug 09 16:40:21 IRKT 2022
//这上面时间 对程序员相当不友好!!!
//通过一个类将日期格式转换一下
SimpleDateFormat sdf = new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");
//yyyy-MM-dd HH:mm:ss
//年-月-天 时:分:秒
//2022-08-09 16:43:32
//将这个格式Tue Aug 09 16:40:21 IRKT 2022
//转换为2022-08-09 16:43:32
String format = sdf.format(time);
System.out.println(format);
//yyyy-MM-dd HH:mm:ss
//以上能不能胡乱写?不能
//以后开发中要用的!!
}
}
2.SimpDateFormat类(日期格式化)
SimpleDateFormat 格式化与解析时间日期类 jdk1.8之前
2.1SimpDateFormat类的构造方法
方法名 | 作用 |
SimpleDateFormat() | 此构造器返回默认的日期格式:20-6-8 下午12:08 |
SimpleDateFormat(String) | 此构造器返回指定日期格式(常用:yyyy-MM-dd HH:mm:ss) |
2.2SimpDateFormat类的方法
方法 | 作用 |
format(date) | 格式化: 日期—>字符串 |
parse(date) | 解析: 字符串—>日期 |
案例:
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException { //这里需要抛出异常
//无参构造器
SimpleDateFormat sdf = new SimpleDateFormat();
Date date = new Date();
//format():格式化 返回一个中国日期 日期 ---> 字符串
System.out.println("------------格式化------------");
String format = sdf.format(date);
System.out.println(date); //Mon Jun 08 12:08:57 CST 2020
System.out.println(format); //20-6-8 下午12:08
//parse():解析: 格式化的逆过程 字符串 ---> 日期
System.out.println("-----------解析-----------");
String s1 = "20-6-8 下午12:08";
Date parse = sdf.parse(s1);
System.out.println(parse);
//有参构造器
System.out.println("----------有参构造器:指定日期格式---------");
//格式化
new SimpleDateFormat();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = sdf1.format(date);
System.out.println(format1);
//解析
Date date1 = sdf1.parse(format1);
System.out.println(date1);
}
String date = "2020-10-21";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(date);
java.sql.Date date2 = new java.sql.Date(date1.getTime());
System.out.println(date2);
}
}
3.LocalDate类(日历日期类)
简单一句话,Date用来表示时间点,LocalDate类用来表示日历日期。
还有LocalTime,LocalDateTime类(常用,时间日期类)
3.1LocalDate类的常用方法
方法名 | 作用 |
LocalDate.of(int year,int month,int day) | 提供日期构造一个特定日期的对象; |
LocalDate.now() | 获得当前日期,返回LocalDate类; |
getYear() | 获得年份,返回int; |
getMonthValue() | 获得月份,返回int; |
getDayOfMonth() | 获得天数,返回int; |
getDayOfWeek() | 获得当前是周几,以DayOfWeek类的一个实例返回; |
plusDays(int n),minusDays(int n) | 生成当前日期之后或之前n天的日期; |
案例:
public class TimeDemo {
public static void main(String[] args) {
//获取对象
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localTime); //23:34:04.762
System.out.println(localDate); //2020-06-08
System.out.println(localDateTime); //2020-06-08T23:34:04.762
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 21, 10, 10, 10, 100000000);
System.out.println(localDateTime1); //2020-10-21T10:10:10.100
System.out.println(localDateTime.getDayOfMonth()); //8
System.out.println(localDateTime.getDayOfWeek()); //MONDAY
System.out.println(localDateTime.getDayOfYear()); //160
System.out.println(localDateTime.getMonth()); //JUNE
System.out.println(localDateTime.getMonthValue()); //6
System.out.println(localDateTime.getMinute()); //34
LocalDateTime localDateTime2 = localDateTime.withDayOfMonth(30);
System.out.println(localDateTime); //2020-06-08T23:34:04.762
System.out.println(localDateTime2); //2020-06-30T23:34:04.762
LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
System.out.println(localDateTime); //2020-06-08T23:34:04.762
System.out.println(localDateTime3); //2020-09-08T23:34:04.762
LocalDateTime localDateTime4 = localDateTime.minusMonths(1);
System.out.println(localDateTime); //2020-06-08T23:34:04.762
System.out.println(localDateTime4); //2020-05-08T23:34:04.762
}
}