Java中日期时间类Calendar

一,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);

    }
}

猜你喜欢

转载自www.cnblogs.com/noperx/p/11361212.html