草庐IT

读Java实战(第二版)笔记06_新的日期和时间API

躺柒 2023-04-17 原文

1. Java 8之前的库对日期和时间的支持非常不理想

2. TemporalField接口

2.1. 定义了如何访问temporal对象某个字段的值的接口

2.2. ChronoField枚举

2.2.1. 实现TemporalField接口

3. LocalDate类

3.1. 实例是一个不可变对象

3.2. 只提供了简单的日期

3.3. 不含当天的时间信息

3.4. 不附带任何与时区相关的信息

3.5. LocalDate.of

3.5.1. 静态工厂方法of创建一个LocalDate实例

3.6. LocalDate.now()

3.6.1. 从系统时钟中获取当前的日期

3.7. LocalDate.parse

3.7.1. 通过解析代表日期的字符串创建

3.8. getYear()

3.9. getMonthValue()

3.10. getDayOfMonth()

3.11. 建议使用

4. ChronoLocalDate接口

4.1. 尽量避免使用

4.1.1. 开发者的代码中会做一些假设

4.1.2. 这些假设在不同的日历系统中,有可能不成立

4.2. 将程序的输入或者输出本地化时使用

5. 历法系统

5.1. ISO-8601的历法系统

5.1.1. 世界文明日历系统的事实标准

5.2. ThaiBuddhistDate

5.3. MinguoDate

5.4. JapaneseDate

5.5. HijrahDate

5.5.1. 伊斯兰教日历

5.5.2. 最复杂

5.5.3. 乌姆库拉(Umm Al-Qura)变量

5.5.4. 只能首先可见于沙特阿拉伯

6. LocalTime类

6.1. LocalTime.of

6.1.1. 静态工厂方法of创建一个LocalTime实例

6.2. LocalTime.parse

6.2.1. 通过解析代表时间的字符串创建

6.3. getHour()

6.4. getMinute()

6.5. getSecond()

7. DateTimeFormatter类

7.1. 实例定义了如何格式化一个日期或者时间对象

7.2. 字符串参数无法被解析为合法的LocalDate或LocalTime对象

7.2.1. DateTimeParseException异常

8. LocalDateTime类

8.1. LocalDate和LocalTime的合体

8.2. 同时表示了日期和时间

8.3. 不带有时区信息

8.4. toLocalDate

8.4.1. 从LocalDateTime中提取LocalDate

8.5. toLocalTime

8.5.1. 从LocalDateTime中提取LocalTime

8.6. atTime

8.6.1. 向LocalDate传递一个时间对象

8.7. atDate

8.7.1. 向LocalTime传递一个日期对象的方式

9. Instant类

9.1. java.time.Instant类

9.2. 机器的日期和时间格式

9.2.1. 为了便于机器使用

9.2.2. 由秒及纳秒所构成的数字

9.2.3. 无法处理时间单位

9.3. 以Unix元年时间(传统的设定为UTC时区1970年1月1日午夜时分)开始所经历的秒数进行计算

9.4. Instant.ofEpochSecond

9.4.1. 单参数

9.4.1.1. 传递代表秒数的值创建一个该类的实例

9.4.2. 双参数

9.4.2.1. 接受第二个以纳秒为单位的参数值

9.4.2.2. 对传入作为秒数的参数进行调整

9.4.2.3. 纳秒分片在0到999999999之间

9.5. Instant.now()

9.5.1. 获取当前时刻的时间戳

9.6. Instant.fromInstant()

9.7. toInstant()

9.8. 弃用API跟新的日期和时间API之间执行互操作

10. Duration类

10.1. 主要用于以秒和纳秒衡量时间的长短

10.2. 不能仅向between方法传递一个LocalDate对象做参数

10.3. Duration.between

10.4. 对象都是不可修改的

10.5. 以两个temporal对象的差值的方式来定义它们的对象

11. Period类

11.1. Period.between

11.1.1. 得到两个LocalDate之间的时长

11.2. 对象都是不可修改的

11.3. 以两个temporal对象的差值的方式来定义它们的对象

12. 表示时间间隔的通用方法

12.1. 

13. 表示时间点的通用方法

13.1. 

14. TemporalAdjusters类

14.1. 方法名基本就是问题陈述

14.2. 可以进行更加复杂的日期操作

14.2.1. 不再局限于一次只能改变它的一个值,并且你还可按照需求定义自己的日期转换器

14.3. TemporalAdjusters.ofDateAdjuster

14.3.1. 使用Lambda表达式定义TemporalAdjuster对象

14.3.2. 接受一个UnaryOperator类型的参数

14.4.

15. DateTimeFormatter类

15.1. java.time.format包

15.2. 线程安全

15.3. DateTimeFormatter.BASIC_ISO_DATE

15.3.1. 20230202

15.4. DateTimeFormatter.ISO_LOCAL_DATE

15.4.1. 2023-02-02

15.5. DateTimeFormatter.ofPattern

15.5.1. 单参数

15.5.2. 双参数

15.5.2.1. 第二参数Locale的格式器

16. DateTimeFormatterBuilder类

16.1. 区分大小写的解析

16.2. 柔性解析

16.2.1. 允许解析器使用启发式的机制去解析输入

16.2.2. 不精确地匹配指定的模式

16.3. 填充

16.4. 在格式器中指定可选节

17. ZoneId类

17.1. java.time.ZoneId

17.2. 无法修改的

17.3. 时区处理

17.4. ZoneId.of

17.5. toZoneId()

17.6. 

18. ZoneOffset类

18.1. ZoneId的一个子类

18.2. 当前时间和伦敦格林尼治子午线时间的差异

18.3. 偏差实际上对应的是美国东部标准时间

18.4. 并未考虑任何夏令时的影响

18.5. 大多数情况下,不推荐使用

有关读Java实战(第二版)笔记06_新的日期和时间API的更多相关文章

  1. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  2. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  3. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  4. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  5. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  6. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

  7. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

  8. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  9. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  10. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

随机推荐