Java8中关于表示时间的特性

143 阅读1分钟
public class NuDate {

    public static void main(String[] args) throws InterruptedException {
        Instant start = Instant.now();//Instant 表示时间线上的一个瞬时点
        //System.out.println(start.getEpochSecond());//距1970年的毫秒数
        //Thread.sleep(2000);
        Instant end = Instant.now();
        Duration duration = Duration.between(start, end);//Duration 该模型是一个有向的持续时间,这意味着持续时间可能是负的。
		//System.out.println(duration.getSeconds());


		//ZonedDateTime带时区 LocalDateTime不带时区(不建议使用)
		//ZoneID该模型是一个有向的持续时间,这意味着持续时间可能是负的。
		//ofInstant(Instant instant, ZoneId zone)获得 ZonedDateTime实例从一个 Instant。
        ZonedDateTime dtUTC = ZonedDateTime.ofInstant(start, ZoneId.of("UTC"));

		//System.out.println(dtUTC);

        ZonedDateTime dtSH = start.atZone(ZoneId.systemDefault());//systemDefault()=of("Asia/Shanghai")
        //System.out.println(dtSH);

		//获取可用区域标识集的集合。
        //System.out.println(ZoneRulesProvider.getAvailableZoneIds());

		//ofPattern(String pattern) 创建一个格式化程序使用指定的模式。
		DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss xx");
		//format(TemporalAccessor temporal) 使用此格式化程序格式的日期时间对象。
		String dateStr = df.format(dtSH);

		//System.out.println(dateStr);

		//parse(CharSequence text, DateTimeFormatter formatter) 获得 ZonedDateTime实例从使用特定格式的文本字符串
		//反序列化
		ZonedDateTime dtSH2 = ZonedDateTime.parse(dateStr, df);
		//System.out.println(dtSH2);


//		ZonedDateTime nextTues = dtSH.with(TemporalAdjusters.next(DayOfWeek.TUESDAY));
//		System.out.println(nextTues);
    }
}