java 之 时间类总结
Posted zero-vic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 之 时间类总结相关的知识,希望对你有一定的参考价值。
1、java.util.Date
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
Date()使用当前日期和时间来初始化对象。
Date(long millisec),该参数是从1970年1月1日起的毫秒数.
获取当前日期时间
public class DataTest { public static void main(String[] args) { Date date = new Date(); System.out.println(date);//Tue Jul 07 22:54:59 CST 2020 System.out.println(date.getTime());//1594133756181 System.out.println(new Date(System.currentTimeMillis()));//Tue Jul 07 23:35:25 CST 2020 } }
Date类常用方法
2、java.sql.Date
包含年月日、对应sql中的DATE类型。是java.util.Date的子类但是只有一个构造函数。
Date(long millisec),该参数是从1970年1月1日起的毫秒数.
获取当前时间
public class SqlDate { public static void main(String[] args) { Date date = new Date(System.currentTimeMillis()); System.out.println(date); System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date)); // 2020-07-07 // 2020-07-07 11:41:59 } }
3、java.sql.Time
包含时分秒为,对应SQL中TIME类型。与java.sql.Date一样有一个有参构造函数。
Time(long millisec),该参数是从1970年1月1日起的毫秒数.
获取当前日期时间
public class SqlDate { public static void main(String[] args) { Time time = new Time(System.currentTimeMillis()); System.out.println(time); System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(time)); // 23:53:51 // 2020-07-07 11:53:51 } }
4、java.sql.Timestamp
时间戳,对应SQL中的TIMESTAMP类型,精确到纳秒级别。
Timestamp(long millisec),该参数是从1970年1月1日起的毫秒数.
获取当前日期时间
public class SqlDate { public static void main(String[] args) { Timestamp timestamp =new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(timestamp)); // 2020-07-07 23:58:04.907 // 2020-07-07 11:58:04 } }
5、java.text.SimpleDateFormat
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
将时间字符串转化为Date再格式化
public class DateFormatTest { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); Date date = sdf.parse("2020年05月20日 13:14:58"); System.out.println(date); System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date)); // Wed May 20 13:14:58 CST 2020 // 2020-05-20 01:14:58 } }
日期和时间格式化编码
6、java.util.Calendar
日历类,大多用来获取时间的特殊属性,比如年份,月份,星期几。
Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
jdk1.8新增了创建方法。
public class CalendarTest { public static void main(String[] args) { //获取当前时间的Calendar对象,可以通过set方法来设置时间 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime()); //JDK1.8 创建一个指定日期的Calendar对象 Calendar calendar1 = new Calendar.Builder().setDate(2020,05,20).build(); System.out.println(calendar1.getTime()); System.out.println(calendar1.get(Calendar.YEAR)); System.out.println(calendar1.get(Calendar.MONTH)); System.out.println(calendar1.get(Calendar.DATE)); System.out.println(calendar1.get(Calendar.HOUR_OF_DAY)); System.out.println(calendar1.get(Calendar.MINUTE)); System.out.println(calendar1.get(Calendar.SECOND)); System.out.println(calendar1.get(Calendar.DAY_OF_WEEK)); // Wed Jul 08 00:29:17 CST 2020 // Sat Jun 20 00:00:00 CST 2020 // 2020 // 5 // 20 // 0 // 0 // 0 // 7 } }
Calendar类对象字段类型
7、java.util.GregorianCalendar
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。
Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。
GregorianCalendar定义了两个字段:AD和BC。这是代表公历定义的两个时代.。
构造方法
常用方法
java8开始有的新的操作时间的类
8、java.time.LocalDate
LocalDate提供年月日而不提供时分秒信息,它是不可变类且线程安全的。它经常被用于展示year-month-day,day-of-year,day-of-week,week-of-year等格式的信息。
public class LocalDates { public static void main(String[] args) { LocalDate ld = LocalDate.now();//获取当前时间对象 System.out.println(ld); System.out.println(ld.getYear());//那一年 System.out.println(ld.getMonth());//那个月 System.out.println(ld.getDayOfMonth());//几号 System.out.println(ld.getDayOfWeek());//周几 System.out.println(ld.getDayOfYear());//一年中第多少天 System.out.println(ld.isLeapYear());//是否闰年 // 2020-07-08 // 2020 // JULY // 8 // WEDNESDAY // 190 // true } }
9、java.time.Time
提供时分秒不提供年月日,也是线程安全并且不可变类。它经常被用于展示hour-minute-second格式的信息。可以对时间进行加减等操作。
public class LocalTimeTest { public static void main(String[] args) { LocalTime localTime = LocalTime.now();//获取当前时间 System.out.println(localTime); int hour = localTime.getHour();//获取小时 System.out.println(hour); LocalTime addTwoHours = localTime.plusHours(2l);//增加2小时 System.out.println(addTwoHours); LocalTime reduceTOneHour = localTime.minusHours(1L);//减少2小时 System.out.println(reduceTOneHour); // 01:05:20.498 // 1 // 03:05:20.498 // 00:05:20.498 } }
10、java.time.LocalDateTime
包含年月日时分秒,精确到纳秒级别,同样是线程安全并且不可变类。它可以操作时间中的年月日时分秒并且可以获取其中的属性。
public class LocalDateTimeTest { public static void main(String[] args) { LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); //LocalDateTime 和 LocalDate, LocalTime 相互转换 LocalDate localDate = localDateTime.toLocalDate(); System.out.println(localDate); LocalTime localTime = localDateTime.toLocalTime(); System.out.println(localTime);
// 2020-07-08T01:13:36.274
// 2020-07-08
// 01:13:36.274
}
}
11、java.time.Instant
时间戳,就包含年月日时分秒,精确到纳秒级别,同样是线程安全并且不可变类。
public class InstantTest { public static void main(String[] args) { Instant instant = Instant.now(); System.out.println(instant); //2020-07-07T17:16:23.233Z } }
12、java.time.Duration
时间段,同样是线程安全并且不可变类。
public class DurationTest { public static void main(String[] args) { Duration duration = Duration.between(LocalTime.of(10,14,59), LocalTime.of(13,14,59)); long toDays = duration.toDays(); long toHours = duration.toHours(); System.out.println(toDays); System.out.println(toHours);
// 0
// 3
} }
以上是关于java 之 时间类总结的主要内容,如果未能解决你的问题,请参考以下文章
2020/7/8 JAVA总结之:匿名对象/内部类/包的声明与访问/访问修饰符/代码块