Instant、Duration

  • Instant和Duration都是不可修改的类,一些增加、减少方法返回的都是新的实例
  • Instant表示当前时刻,相对于1970年1月1日午夜。
  • Duration表示两个时刻之间的时间量
  • long值可以存储大约300年时间对应的纳秒数,如果Duration大于这个时间,获取纳秒数会发生上溢



本地日期LocalDate



日期调整器TemporalAdjusters



本地时间LocalTime

本地日期时间LocalDateTime

时区时间

  • 代表的是一个具体的时刻Instant

格式化和解析DateTimeFormatter

三种格式器

  • 预定义的格式器

  • locale相关的格式器

  • 自定义模式格式器

解析字符串中的日期、时间值

java.util.date

  1. Date的源码,可以发现它实际上存储了一个long类型的以毫秒表示的时间戳
  2. Date对象有几个严重的问题:它不能转换时区,除了toGMTString()可以按GMT+0:00输出外,Date总是以当前计算机系统的默认时区为基础进行输出。此外,我们也很难对日期和时间进行加减,计算两个日期相差多少天,计算某个月第一个星期一的日期等。
  3. getYear()返回的年份必须加上1900,getMonth()返回的月份是011分别表示112月,所以要加1,而getDate()返回的日期范围是1~31,又不能加1。

java.util.calendar

相对于Date多了简单的日期加减计算

  1. 注意到Calendar获取年月日这些信息变成了get(int field),返回的年份不必转换,返回的月份仍然要加1,返回的星期要特别注意,1~7分别表示周日,周一,……,周六。
  2. Calendar只有一种方式获取,即Calendar.getInstance(),而且一获取到就是当前时间。如果我们想给它设置成特定的一个日期和时间,就必须先清除所有字段
  3. 利用Calendar.getTime()可以将一个Calendar对象转换成Date对象,然后就可以用SimpleDateFormat进行格式化了。

Java.util.timeZone

  1. Calendar和Date相比,它提供了时区转换的功能。时区用TimeZone对象表示:
  2. 时区的唯一标识是以字符串表示的ID,我们获取指定TimeZone对象也是以这个ID为参数获取,GMT+09:00、Asia/Shanghai都是有效的时区ID。要列出系统支持的所有ID,请使用TimeZone.getAvailableIDs()。
    利用Calendar进行时区转换的步骤是:
  • 清除所有字段;
  • 设定指定时区;
  • 设定日期和时间;
  • 创建SimpleDateFormat并设定目标时区;
  • 格式化获取的Date对象(注意Date对象无时区信息,时区信息存储在SimpleDateFormat中)。
  • 因此,本质上时区转换只能通过SimpleDateFormat在显示的时候完成。
public class Main {
    public static void main(String[] args) {
        // 当前时间:
        Calendar c = Calendar.getInstance();
        // 清除所有:
        c.clear();
        // 设置为北京时区:
        c.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        // 设置年月日时分秒:
        c.set(2019, 10 /* 11月 */, 20, 8, 15, 0);
        // 显示时间:
        var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
        System.out.println(sdf.format(c.getTime()));
        // 2019-11-19 19:15:00
    }
}

计算机表示的时间是以整数表示的时间戳存储的,即Epoch Time,Java使用long型来表示以毫秒为单位的时间戳,通过System.currentTimeMillis()获取当前时间戳。

与遗留类的交互

原文地址:http://www.cnblogs.com/studyhaha/p/16898480.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性