java dateformat 24_java – (简单)DateFormat,允许24:00:00和00:00:00作为输入

news/2024/7/2 21:41:04

值24:00未在LocalTime中表示,因为它严格地是第二天的一部分.考虑到24:00可以表示为LocalTime的一部分的模型,但结论是它在很多用例中会非常混乱,并且会产生比它解决的更多错误.

但是在java.time中支持24:00.完全可以使用标准格式化技术对其进行解析,但是必须使用SMART或LENIENT模式,请参阅ResolverStyle.默认模式为SMART,但DateTimeFormatter.ISO_LOCAL_DATE_TIME等DateTimeFormatter上的formtter常量处于STRICT模式.因此,ofPattern()默认为SMART模式:

static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");

LocalDateTime ldt = LocalDateTime.parse("2012-12-03T24:00", FORMATTER);

System.out.println(ldt); // 2012-12-04T00:00

请注意,这也适用于OffsetDateTime和ZonedDateTime. Instant的标准解析器支持24:00,没有特殊的格式化程序:

Instant instant = Instant.parse("2015-01-01T24:00:00Z");

System.out.println(instant); // 2015-01-02T00:00:00Z

可以使用withResolverStyle()将任何格式化程序转换为SMART或LENIENT模式,如下所示:

DateTimeFormatter f = ... // obtain a formatter somehow

DateTimeFormatter smartMode = f.withResolverStyle(ResolverStyle.SMART);

// for example

f = DateTimeFormatter.ISO_LOCAL_DATE_TIME.withResolverStyle(ResolverStyle.SMART);

支持的第二个元素是parseExcessDays().这允许在仅解析时间时获得超出的日期:

static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");

TemporalAccessor parsed = TIME_FORMATTER.parse("24:00");

LocalTime lt = LocalTime.from(parsed);

Period excessDays = parsed.query(DateTimeFormatter.parsedExcessDays());

System.out.println(lt + " + " + excessDays); // 00:00 + P1D

最后,给高级用户注意.从理论上讲,它应该可以编写自己的Temporal实现,它是LocalTime的副本,但支持24:00作为有效值.这样的一个类,比如LocalTimeWithEndOfDay,可以在没有问题的情况下与格式化程序/解析器一起运行(并且可能是ThreeTen-Extra的一个很好的补充.


http://www.niftyadmin.cn/n/4388301.html

相关文章

python使用yaml库读取和写入数据

import yamltest.yml文件数据:yaml_path r"D:\PycharmProjects\2020study\BBBstudy\test.yml" with open(yaml_path, r) as f:cfg f.read()print(cfg)# 此时读出来的数据是字符串print(type(cfg))# 用yaml.load方法转字典d yaml.load(cfg)print(d)prin…

lambda函数复习

def test(x):return x*x # 这里我们用lambda定义一个匿名的内联函数。请注意,该函数没有名称。test 是保存创建的lambda函数的变量的名称 # 上面的函数和下面的lambda函数是一样的 test_f lambda x: x*x print(test(3)) print(test_f(3)) # 常量函数 def constant(…

java serializable用法_java基础----gt;Serializable的使用

Serializable序列化的简要说明一、 持久化的简单介绍:“持久化”意味着对象的“生存时间”并不取决于程序是否正在执行——它存在或“生存”于程序的每一次调用之间。通过序列化一个对象,将其写入磁盘,以后在程序再次调用时重新恢复那个对象&…

html5-4 HTML5超链接、URL地址和表格

html5-4 HTML5超链接、URL地址和表格 一、总结 一句话总结&#xff1a; 1、cellspace有什么用&#xff1f; 清除表格的单元格间距 26 <table border1px cellspacing0px width100%> 2、页面中的字体一般用什么好&#xff0c;怎么设置&#xff1f; 微软雅黑&#xff0c…

两行代码激活windows系统

slmgr /skms kms.03k.org slmgr /ato 将以上代码存为bat文件运行

python使用time库创建时间路径和时间文件

import time import osclass FilePath(object):def __init__(self):# 获得当前系统时间的字符串self.local_time time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(time.time()))print(self.local_time)print(type(self.local_time))# 获取年字符串self.year se…

java mongodb 查询 游标_MongoDB 游标详解及实例代码

MongoDB 游标详解MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针&#xff0c;可以定位到某条记录&#xff0c;在MongoDB中&#xff0c;则是文档。因此在mongoDB中游标也有定义&#xff0c;声明&#xff0c; 打开&#xff0c;读取&#xff0c;关…

python web自动化测试之二次封装 selenium 类

from logs.logger import Logger from selenium.common.exceptions import NoSuchElementException import time import os from selenium import webdriver """""" """二次封装 selenium 类,又称之为通用类。用于给页面类使用 &…