将字符串解析为本地日期不使用所需的世纪

2023-12-05

我正在使用这个 DateTimeFormatter:

DateTimeFormatter.ofPattern("ddMMYY")

我想解析字符串150790我得到了这个错误:

Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=15, MonthOfYear=7, WeekBasedYear[WeekFields[MONDAY,4]]=2090},ISO of type java.time.format.Parsed

显然,我想得到以下内容TemporalAccessor:

{DayOfMonth=15, MonthOfYear=7, WeekBasedYear=1990}

你知道为什么我得到的是 2090 年而不是 1990 年吗?

感谢您的帮助


因为这个问题确实是关于新的java.time- 包而不是SimpleDateFormat我将引用以下内容相关部分:

年份:字母数决定下面的最小字段宽度 使用哪种填充。如果字母数为两个,则减少 使用两位数形式。对于打印,这会输出最右边的两个 数字。对于解析,这将使用基值 2000 进行解析, 得出 2000 年至 2099 年(含)范围内的年份。

我们看到 Java-8 使用范围默认 2000-2099, 不喜欢SimpleDateFormat相对于今天的范围 -80 年到 +20 年。

如果你想配置它,那么你必须使用追加值减少()。这是以一种不方便的方式设计的,但是可能的,请参见这里:

String s = "150790";

// old code with base range 2000-2099
DateTimeFormatter dtf1 = 
  new DateTimeFormatterBuilder().appendPattern("ddMMyy").toFormatter();
System.out.println(dtf1.parse(s)); // 2090-07-15

// improved code with base range 1935-2034
DateTimeFormatter dtf2 = 
  new DateTimeFormatterBuilder().appendPattern("ddMM")
  .appendValueReduced(
    ChronoField.YEAR, 2, 2, Year.now().getValue() - 80
  ).toFormatter();
System.out.println(dtf2.parse(s)); // 1990-07-15

顺便说一句,如果您确实想要基于周的年份,那么您必须使用 Y 而不是 y 或适当的字段IsoFields.WEEK_BASED_YEAR。关于您没有任何其他与周相关的字段这一事实,我会假设正常的日历年,而不是基于周的日历年。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串解析为本地日期不使用所需的世纪 的相关文章

  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • ElasticBeanstalk Java,Spring 活动配置文件

    我正在尝试通过 AWS ElasticBeanstalk 启动 spring boot jar 一切正常 配置文件为 默认 有谁知道如何为 java ElasticBeanstalk 应用程序 不是 tomcat 设置活动配置文件 spri
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 如何在 PostgreSQL 中返回不同时区的当前日期

    我正在开发一个使用东部时间并将数据库设置为太平洋时间的应用程序 这已经引起了一些问题 但我们被告知不可能有其他方式 所以我们只能解决它 不管怎样 我遇到的麻烦之一就是获取今天的约会 由于数据库位于太平洋 如果我使用以下命令询问今天的日期cu
  • 在数据流模板中调用 waitUntilFinish() 后可以运行代码吗?

    我有一个批处理 Apache Beam 作业 它从 GCS 获取文件作为输入 我的目标是根据执行后管道的状态将文件移动到两个 GCS 存储桶之一 如果管道执行成功 则将文件移动到存储桶 A 否则 如果管道在执行过程中出现任何未处理的异常 则
  • 当分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

    我有看起来像这样的 GraphTraversals attrGroup GraphTraversal
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它

随机推荐

  • 在Python中,如何按排序键顺序迭代字典?

    有一个现有的函数以以下结尾 其中d是一本字典 return d iteritems 返回给定字典的未排序迭代器 我想返回一个遍历已排序项目的迭代器by key 我怎么做 还没有对此进行广泛的测试 但可以在 Python 2 5 2 中使用
  • 将 SSE 转换为 Neon:如何打包然后提取 32 位结果

    我必须将以下指令从 SSE 翻译为 Neon uint32 t a mm cvtsi128 si32 mm shuffle epi8 a SHUFFLE MASK Where static const m128i SHUFFLE MASK
  • Google 地图 V3 键盘辅助功能

    我正在构建一个地图 我希望可以通过键盘访问 V3 默认情况下可以通过键盘访问 但似乎在单击地图之前您无法访问键盘功能 我添加了一个链接来选择 它将带您到包含地图的 div 标签 但这不起作用 有没有什么方法可以在不实际使用鼠标的情况下激活一
  • 如何设置JavaScript窗口对象打开的窗口中某些元素的innerHTML?

    我有一些简单的 JavaScript 代码 如下所示 该函数通过 onclick 事件调用 窗口打开正常 但元素的innerHTML 没有改变 这是我拥有的文件 所以我知道我没有被任何安全策略阻止 并且 id 为 foo 的元素肯定存在 这
  • 无法使用 libcurl 访问需要客户端身份验证的站点

    我使用下面的片段来设置客户端身份验证的证书和密钥 curl easy setopt curl CURLOPT SSLCERT clientCert pem curl easy setopt curl CURLOPT SSLCERTPASSW
  • SQL Server - 与 NULL 相比非常慢

    我想加快以下查询的速度 WHERE 子句中有两个条件 请参阅下面的查询以供参考 目前 大约需要 60 秒 但是 如果我删除 where 子句中的第一个条件 Query 为 NULL 那么它几乎立即返回 关于如何加快速度有什么想法吗 表中大约
  • 相机框架和物体框架

    我正在阅读有关交互式图形的内容 特别是我开始了有关观看的部分 但我不太理解这句话 最初 我们从设置为单位矩阵的模型视图矩阵开始 因此相机框架和物体框架是相同的 我知道什么是模型视图矩阵 并且我知道在这种情况下相机视图的方向是 z 负轴 但我
  • 从 master 更新 Git 分支

    我有四个分支 master b1 b2 和 b3 在我完成 b1 b3 之后 我意识到我在分支 master 上需要更改一些应该在所有其他分支中的内容 我改变了我需要的master而且 这是我的问题 如何更新所有其他分支master分行代码
  • 在循环中查找列表的索引

    我有一个简单的问题 如果我在 python 中有一个 for 循环 如下所示 for name in nameList 我如何知道元素名称的索引是什么 我知道我可以做一些类似的事情 i 0 for name in nameList i i
  • 选择另一个表中缺少的记录的有效方法

    我有3张桌子 下面是结构 student id int name varchar 20 course course id int subject varchar 10 student course st id int course id i
  • 如何从参考经纬度得到“x”米的经纬度?

    我有以米为单位的距离以及参考纬度和经度 现在我想要 x 米上给定参考点在四个方向 南 北 东 西 的纬度和经度 我怎样才能得到这个值 我需要用 C 编写此内容 但欢迎任何伪代码或逻辑指导 Update 我有一个坐标作为参考点 我想计算北方向
  • C++:将指针强制转换为 int 然后再次返回指针是否安全?

    将指针强制转换为 int 然后再次返回指针是否安全 如果我们知道指针是否是 32 位长并且 int 是否是 32 位长呢 long juggle long p static assert sizeof long sizeof int int
  • 单页应用程序的搜索引擎索引

    好吧 我编写 Backbone js 应用程序已经一年多了 我喜欢这个框架模型 我已经学会了如何避免所有陷阱等 但作为单页应用程序开发人员 有一个领域我仍然很薄弱 如何对面向公众的应用程序进行搜索引擎优化 我正在开发一个博客项目 我认为最简
  • 使用 TypeScript 构建的 Angular 指令中的侧链接函数中的“this”未定义

    我对 TypeScript 和 Angular 都是相对新手 所以我可能在这里做了一些非常基本的错误 我正在尝试创建一个抽象基类 从中可以派生多个指令 每个指令将实现一个自定义验证规则 我的代码编译正常 但在运行时失败 特别是当它尝试调用
  • 获取 varchar 一部分的最后一个单词(左/右)

    获取 varchar 一部分的最后一个单词的正确方法是什么 DECLARE desc varchar 100 SET desc EXCHANGEUNIT P1i SILVERBLACK CYRILLIC SELECT RTRIM LEFT
  • 在文件目录中重复创建 .htaccess 文件

    我的共享主机中有大约 10 个站点 最近我注意到创建了很多 htaccess 文件并限制了用户访问
  • 使用 SwiftMailer 和 PHP 检索文件名以附加到电子邮件

    我昨天问了这个问题并得到了建议 并使用了它 但由于某种原因它不起作用 因此 我需要检索用户从 HTML 表单上传到我的服务器的文件的名称 我需要将此文件附加到由 PHP SwiftMailer 发送的电子邮件中 这是我的代码 文件上传部分
  • Wildfly -9 javax.mail 不工作

    我正在使用 Wildfly 9 0 0 Final 和javax mail api在我的应用程序中 我收到以下日志 2015 07 27 15 08 16 318 CONFIG javax mail default task 17 Prov
  • CLLocationManager 不要停止

    亲爱的开发者朋友们 我正在努力寻找解决 CLLocationManager 问题的方法 我在我的应用程序中使用 CLLocationManager 实例 如果用户选择设备上的 主页 按钮或终止应用程序 我希望位置服务停止 因此我打电话 se
  • 将字符串解析为本地日期不使用所需的世纪

    我正在使用这个 DateTimeFormatter DateTimeFormatter ofPattern ddMMYY 我想解析字符串150790我得到了这个错误 Unable to obtain LocalDate from Tempo