一,Calendar类
public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>
Calendar类是一个抽象类(Calendar类不能直接创建实例),它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下个星期的日期)提供了一些方法;瞬间可用毫秒值来表示,它是距历元(格林威治时间1970年1月1日的00:00:00.000)的偏移量
Calendar类如果要创建实例,必须通过getInstance方法构造Calendar的子类对象
二,常用方法
1,Calendar.getInstance();
该方法返回Calendar类的子类对象;为什么说『返回Calendar类的子类对象』?首先Calendar类是一个抽象类,所以不存在所谓的Calendar类的实例,其次在地球上有很多不同的时区,不同的时区就要对应不同的Calendar类的的子类(每个国家都有自己的一套日历算法,比如西方的国家的第一个星期大部分为星期日,而中国则为星期一,等等)
2,get()
该方法接受Calendar类的YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、SECOND等日历字段
public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calender.set(2019,0,22); System.out.println(calendar.get(Calendar.YEAR)); System.out.println(calendar.get(Calendar.MONTH));//默认从0开始计数,通常+1 System.out.println(calendar.get(Calendar.DATE));//等同于DAY_OF_MONTH System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); }
3,getTime()
向Date类转换
public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); Date time = calendar.getTime(); System.out.println(time); System.out.println(time.getTime()); time.setTime(1265871327628L); System.out.println(time); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss"); String format = simpleDateFormat.format(time); System.out.println(format); }
三,LocalDateTime类
Java的Date,Calendar类型使用起来并不是很方便,而且Date类(据说)有着线程不安全等诸多弊端。同时若不进行封装,会在每次使用时特别麻烦。于是Java8推出了线程安全、简易、高可靠的时间包。并且数据库中也支持LocalDateTime类型,在数据存储时候使时间变得简单。Java8这次新推出的包括三个相关的时间类型:LocalDateTime年月日十分秒;LocalDate日期;LocalTime时间;三个包的方法都差不多。
public class LocalDateTimeTest { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println(now); int month = now.getMonthValue(); System.out.println(month); LocalDateTime localDateTime = LocalDateTime.of(2008, 12, 31, 22, 21, 22); System.out.println(localDateTime); ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault()); System.out.println(zonedDateTime); String format = now.format(DateTimeFormatter.ofPattern("YYYY-MM-dd")); System.out.println(format); } }
原文:https://www.cnblogs.com/noperx/p/11361212.html