网站菜单

JDK1.8(二) 时间日期中的进阶方法

(一)of方法

of方法可以根据传入参数的不同来初始化不同的对象:

import java.time.LocalDate;
import java.time.LocalTime;

public class TimeClassDemo3 {
    public static void main(String[] args) {
        LocalDate localDateTime = LocalDate.of(2008,8,8);
        System.out.println(localDateTime);

        LocalTime localTime = LocalTime.of(20,0,0,70);
        System.out.println(localTime);
    }
}

LocalTime这个类的of方法中可以放四个参数,分别表示时,分,秒,纳秒。
其中秒和纳秒为可选参数,如果输入为0,则默认不显示。

LocalDateTime对于of有一种特殊的传入方式

LocalDateTime of(LocalDate date, LocalTime time)

(二)为LocalDateTime添加时区信息(拓展)

java中有一个ZoneID来封装时区信息。

        Set<String> zones =  ZoneId.getAvailableZoneIds();
        for (String zone :zones){
            System.out.println(zone);
        }
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId);

他是一个泛型为String的Set集合,可以通过systemDefault()来获取到当前的默认时区。

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

/**
 * 为LocalDateTime添加时区信息
 */
public class TimeClassDemo4 {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2008,8,8,8,8);
        //LocalDateTime只是封装了时间,并没有时区相关的数据
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
        System.out.println(zonedDateTime);

        //在上海时间同一时刻,东京的时间是
        ZonedDateTime zonedDateTime1 = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
        ZonedDateTime zonedDateTime2 = zonedDateTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
        System.out.println(zonedDateTime1);
        System.out.println(zonedDateTime2);
    }
}

(三)Month枚举类的使用

import java.time.LocalDate;
import java.time.Month;

/**
 * Month枚举类的使用
 */
public class TimeClassDemo5 {
    public static void main(String[] args) {
        LocalDate localDate = LocalDate.of(2008, Month.AUGUST,8);
        //Month枚举类还有一个of方法,可以返回输入月份对应的美剧值
        Month month = Month.of(12);

        //用处:用于前端属输入数字的时候,用这个方法转为枚举类传入参数中
        LocalDate localDate1 = LocalDate.of(2010,month,9);
        System.out.println(localDate);
        System.out.println(localDate1);
    }
}

相关推荐

JDK1.8(六) 反射

(一)什么是反射 除了基本类型外,所有的数据类型全部都是class 因此,每加载一个Class,就会创建一个实例对象,而一个Class实例中就记录了这个对象的所有信息。包括接口,所有方法,字段,父类等…

JDK1.8(五) 断言与日志

(一)断言 断言的作用: 断言(Assertion)是一种调试程序的方式。在Java中,使用assert关键字来实现断言。 断言可以用于开发和调试阶段: assert x >= 0 : &quo…