首页 > 其他分享 >日期和时间API

日期和时间API

时间:2022-11-17 10:15:43浏览次数:45  
标签:SimpleDateFormat 日期 API 时间 Date 时区 Calendar

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()获取当前时间戳。

与遗留类的交互

标签:SimpleDateFormat,日期,API,时间,Date,时区,Calendar
From: https://www.cnblogs.com/studyhaha/p/16898480.html

相关文章

  • 时间片轮询法
    一、前言为了方便理解和查阅本人所需的知识,在此做笔记。知识点来源书本与网络,如有侵权,联系删除。二、框架1.任务结构typedefstruct_TASK_COMPONENTS{uint8Run;......
  • python日期和时间
    一、日期和时间时间戳#从1970年到现在经过的秒数#作用:用于时间间隔的计算importtimeprint(time.time())#获得float型1668571939.8918502时间格式化符号......
  • 微信消息显示时间研究 | 深先院羽毛球预约脚本的启示
    背景深先院的体育设施一直十分紧缺,羽毛球场经过假期改造后,终于重见天日。球场数量惊人地增长了50%,由原来2个场地增加到了如今3个场地!o.o去年以前预约羽毛球需要在微信小......
  • java——API—— Object类——equals方法
                                                        ......
  • java——API—— Object类——toString方法
    Object类的概述概述java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个......
  • java——API——Math类
                                                         ......
  • java——API——String类
    字符串概述和特点:               字符串的构造方法和直接创建:                      ......
  • nodejs dayjs 时间戳转化时间格式
    Unix时间戳day.js可以轻松转换秒级和毫秒级时间戳:dayjs().unix();//秒dayjs().valueOf();//毫秒letss=dayjs.unix('1668580898').format('YYYY-MM-DDHH:mm:ss'......
  • 【769】Python时间戳转换为北京时间
    参考:Python时间戳转为北京时间参考:Python将时间戳转换为指定格式日期......
  • python爬取公众号文章发布时间
    使用xpath取出来的是空,爬取到本地的html,时间的标签如下,内容也是是空的<emid="publish_time"class="rich_media_metarich_media_meta_text"></em>经过查找发现网页使用的......