博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 核心技术Ⅱ--章六:时间与日期API
阅读量:4222 次
发布时间:2019-05-26

本文共 7607 字,大约阅读时间需要 25 分钟。

时间与日期API

public class TimeTest {      public static void main(String[] args) throws InterruptedException {          testClock();  //      testInstant();  //      testLocalDate();//      testLocalDateTime();  //      testZonedDateTime();  //      testDuration();  //      testChronology();  //      testNewOldDateConversion();      }      /**     * 时钟提供给我们用于访问某个特定 时区的 瞬时时间、日期 和 时间的。     * @throws InterruptedException     */    public static void testClock() throws InterruptedException {          Clock c1 = Clock.systemUTC(); // 系统默认UTC时钟(当前瞬时时间           System.out.println(c1.millis()); // 每次调用将返回当前瞬时时间(UTC)          //相当于System.currentTimeMillis())          Clock c2 = Clock.systemDefaultZone(); // 系统默认时区时钟(当前瞬时时间)          Clock c31 = Clock.system(ZoneId.of("Europe/Paris")); // 巴黎时区          System.out.println(c31.instant()); // 每次调用将返回当前瞬时时间(UTC)          Clock c32 = Clock.system(ZoneId.of("Asia/Shanghai"));// 上海时区          System.out.println(c32.instant());// 每次调用将返回当前瞬时时间(UTC)          Clock c4 = Clock.fixed(Instant.now(), ZoneId.of("Asia/Shanghai"));// 固定上海时区时钟          System.out.println(c4.millis());          Thread.sleep(1000);          System.out.println(c4.millis()); // 不变 即时钟时钟在那一个点不动          Clock c5 = Clock.offset(c1, Duration.ofSeconds(2)); // 相对于系统默认时钟两秒的时钟          System.out.println(c1.millis());          System.out.println(c5.millis());      }      /**     * 瞬时时间 相当于以前的System.currentTimeMillis()      */    public static void testInstant() {          Instant instant1 = Instant.now();          System.out.println(instant1.getEpochSecond());// 精确到秒 得到相对于1970-01-01                                                          // 00:00:00 UTC的一个时间          System.out.println(instant1.toEpochMilli()); // 精确到毫秒          Clock clock1 = Clock.systemUTC(); // 获取系统UTC默认时钟          Instant instant2 = Instant.now(clock1);// 得到时钟的瞬时时间          System.out.println(instant2.toEpochMilli());          Clock clock2 = Clock.fixed(instant1, ZoneId.systemDefault()); // 固定瞬时时间时钟          Instant instant3 = Instant.now(clock2);// 得到时钟的瞬时时间          System.out.println(instant3.toEpochMilli());// equals instant1      }      /**     * 关于日期的操作使用LocalDate yyyy:MM:dd     */    public static void testLocalDate(){        LocalDate today = LocalDate.now();        System.out.println("today:"+today);        LocalDate alonzosBirthday = LocalDate.of(1903, 6, 14);        //可以使用Month枚举        alonzosBirthday = LocalDate.of(1903, Month.JULY, 14);        System.out.println("alonzosBirthday:"+alonzosBirthday);        LocalDate independeceDay = LocalDate.of(2018, Month.JULY, 4);        LocalDate christmas = LocalDate.of(2018, Month.DECEMBER, 25);        //算出两个日期之间的期间        System.out.println("until christmas:"+independeceDay.until(christmas));        System.out.println("until christmas:"+independeceDay.until(christmas,ChronoUnit.DAYS));        //当前时间加减一个月        System.out.println(LocalDate.of(2016, 1, 31).plusMonths(1));        System.out.println(LocalDate.of(2016, 1, 31).minusMonths(1));        //取得当前日期为礼拜几        DayOfWeek startOfLastMillennium = LocalDate.of(1900, 1, 1).getDayOfWeek();        System.out.println("startOfLastMillennium:"+startOfLastMillennium);        System.out.println(startOfLastMillennium.getValue());        System.out.println(DayOfWeek.SATURDAY.plus(3));    }    /**     * 对时间的操作用LocalTime这个类  HH:mm:ss     */    public static void testLocalTime(){        LocalTime rightNow = LocalTime.now();        System.out.println("rightNow:"+rightNow);        LocalTime bedTime = LocalTime.of(22,30);        System.out.println(bedTime.plusHours(8));        //返回午夜到此时的秒数        System.out.println(bedTime.toSecondOfDay());    }    /**     * 对日期与时间的整体操作用这个类 LocalDateTime     */    public static void testLocalDateTime() {          // 使用默认时区时钟瞬时时间创建 Clock.systemDefaultZone() -->即相对于          // ZoneId.systemDefault()默认时区          LocalDateTime now = LocalDateTime.now();          System.out.println(now);          // 自定义时区          LocalDateTime now2 = LocalDateTime.now(ZoneId.of("Europe/Paris"));          System.out.println(now2);// 会以相应的时区显示日期          // 自定义时钟          Clock clock = Clock.system(ZoneId.of("Asia/Dhaka"));          LocalDateTime now3 = LocalDateTime.now(clock);          System.out.println(now3);// 会以相应的时区显示日期          // 不需要写什么相对时间 如java.util.Date 年是相对于1900 月是从0开始          // 2013-12-31 23:59          LocalDateTime d1 = LocalDateTime.of(2013, 12, 31, 23, 59);          // 年月日 时分秒 纳秒          LocalDateTime d2 = LocalDateTime.of(2013, 12, 31, 23, 59, 59, 11);          // 使用瞬时时间 + 时区          Instant instant = Instant.now();          LocalDateTime d3 = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());          System.out.println(d3);          // 解析String--->LocalDateTime          LocalDateTime d4 = LocalDateTime.parse("2013-12-31T23:59");          System.out.println(d4);          LocalDateTime d5 = LocalDateTime.parse("2013-12-31T23:59:59.999");// 999毫秒                                                                              // 等价于999000000纳秒          System.out.println(d5);          // 使用DateTimeFormatter API 解析 和 格式化          DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");          LocalDateTime d6 = LocalDateTime.parse("2013/12/31 23:59:59", formatter);          System.out.println(formatter.format(d6));          // 时间获取          System.out.println(d6.getYear());          System.out.println(d6.getMonth());          System.out.println(d6.getDayOfYear());          System.out.println(d6.getDayOfMonth());          System.out.println(d6.getDayOfWeek());          System.out.println(d6.getHour());          System.out.println(d6.getMinute());          System.out.println(d6.getSecond());          System.out.println(d6.getNano());          // 时间增减          LocalDateTime d7 = d6.minusDays(1);          LocalDateTime d8 = d7.plus(1, IsoFields.QUARTER_YEARS);          // LocalDate 即年月日 无时分秒          // LocalTime即时分秒 无年月日          // API和LocalDateTime类似就不演示了      }    /**   * 即带有时区的date-time 存储纳秒、时区和时差(避免与本地date-time歧义)。       API和LocalDateTime类似,只是多了时差(如2013-12-20T10:35:50.711+08:00[Asia/Shanghai])     */    public static void testZonedDateTime() {          ZonedDateTime now = ZonedDateTime.now();          System.out.println(now);          ZonedDateTime now2 = ZonedDateTime.now(ZoneId.of("Europe/Paris"));          System.out.println(now2);          // 其他的用法也是类似的 就不介绍了          ZonedDateTime z1 = ZonedDateTime.parse("2013-12-31T23:59:59Z[Europe/Paris]");          System.out.println(z1);      }      /**     * 表示两个瞬时时间的时间段      */    public static void testDuration() {          Duration d1 = Duration.between(Instant.ofEpochMilli(System.currentTimeMillis() - 12323123), Instant.now());          // 得到相应的时差          System.out.println(d1.toDays());          System.out.println(d1.toHours());          System.out.println(d1.toMinutes());          System.out.println(d1.toMillis());          System.out.println(d1.toNanos());          // 1天时差 类似的还有如ofHours()          Duration d2 = Duration.ofDays(1);          System.out.println(d2.toDays());      }      public static void testChronology() {          // 提供对java.util.Calendar的替换,提供对年历系统的支持          Chronology c = HijrahChronology.INSTANCE;          ChronoLocalDateTime d = c.localDateTime(LocalDateTime.now());          System.out.println(d);      }      /**      * 新旧日期转换      */      public static void testNewOldDateConversion() {          Instant instant = new Date().toInstant();          Date date = Date.from(instant);          System.out.println(instant);          System.out.println(date);      }  }

博客原地址:

转载地址:http://cfwqi.baihongyu.com/

你可能感兴趣的文章
CUDA 学习(五)、线程块
查看>>
CUDA 学习(八)、线程块调度
查看>>
CUDA 学习(九)、CUDA 内存
查看>>
CUDA 学习(十一)、共享内存
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十四章 生化尖兵
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十五章 超级马里奥64
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十七章 游戏感的原理
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十八章 我想做的游戏
查看>>
游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制
查看>>
游戏设计的艺术:一本透镜的书——第十一章 游戏机制必须平衡
查看>>
游戏设计的艺术:一本透镜的书——第十二章 游戏机制支撑谜题
查看>>
游戏设计的艺术:一本透镜的书——第十三章 玩家通过界面玩游戏
查看>>
编写苹果游戏中心应用程序(翻译 1.3 为iOS应用程序设置游戏中心)
查看>>
编写苹果游戏中心应用程序(翻译 1.4 添加游戏工具包框架)
查看>>
编写苹果游戏中心应用程序(翻译 1.5 在游戏中心验证本地玩家)
查看>>
编写苹果游戏中心应用程序(翻译 1.6 获取本地玩家的信息)
查看>>
编写苹果游戏中心应用程序(翻译 1.7 在游戏中心添加朋友)
查看>>
编写苹果游戏中心应用程序(翻译 1.8 获取本地玩家的好友信息)
查看>>
WebGL自学教程《OpenGL ES 2.0编程指南》翻译——勘误表
查看>>
WebGL自学教程——WebGL示例:13.0 代码整理
查看>>