问题标签 [threetenbp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java.lang.ClassNotFoundException:org.threeten.bp.temporal.TemporalAccessor
我在我的 Maven 项目中使用threetenbp 1.4.4 版。在 tomcat 容器中部署我的 JAR 时,出现以下异常:
java.lang.NoClassDefFoundError:“org/threeten/bp/temporal/TemporalAccessor” 原因:“java.lang.ClassNotFoundException:org.threeten.bp.temporal.TemporalAccessor”。
...这个问题的根本原因和解决方案是什么?(注:本平台目前发布的关于同一问题的建议解决方案,尚未解决我的)。我什至尝试提高或降低 JAR 的版本,但它没有解决问题
android - 使用 ThreetenBp 解析 DateTime 会导致 DateTimeParseException 或不完整的字符串错误
我正在尝试检查日期是否已超过一天。
我在解析字符串时得到了这些错误。
我的数据示例在这里:
我试过这些:
他们都没有工作......正确的方法是什么?
java - 如何从 UTC 日期时间到日期修改小数部分
我正在尝试将 utc 日期时间转换为本地日期时间,但小数部分有一些问题。我称 Web 服务返回一系列数据。其中一个数据是这种格式的 utc 日期时间,我必须使用这个库 org.threeten.bp,我不能使用其他库。
要将utcFormat转换为日期,我发现这段代码可以正常工作
但从我的代码中它不能很好地工作,因为返回这个日期
怎么看就不一样了。我做了一些测试,如果我在点后只留下 3 个小数,那部分代码就可以正常工作。看看这个例子:
我正在寻找一种方法来接收只有三位小数的 utc dateTime,或者通过删除多余的小数来更改 utc dateTime。对于最后一个案例,我不是如果它可以是一个好主意。
java - 使用 org.threeten.bp.format.DateTimeFormatter 解析多个模式
简单版:
我需要能够仅使用一个org.threeten.bp.format.DateTimeFormatter
对象来解析两种类型的时间戳字符串。
模式 1(“YYYY-MM-DD HH:mm:ss.SSSSSS”——此代码有效):
模式 2(“YYYY-MM-DD'T'HH:mm:ss.SSS'Z'”——此代码也有效):
但我需要一个对象来解析两者(这不起作用,显然哈哈):
我尝试了几件事,这是最新的尝试:
但这没有用。我所做的一切似乎都不允许单个对象解析两种类型。
有没有办法做到这一点?
更大的上下文(Swagger codegen):
我有一个使用 Java Swagger 代码生成与 Web 服务交互的应用程序。来自 Web 服务的 JSON 响应包含两种时间戳格式(见上文)。在我的应用程序的某个时刻,我调用 JSON#deserialize 尝试使用(可配置的)DateTimeFormatter 对象。但是,在您拨打电话之前不可能知道您将拥有哪种时间戳格式。
因此,当desearialize
调用发现它不期望的时间戳格式时,它无法成功解析 JSON 响应。
再次提出原始问题:如何将 DateTimeFormatter 配置为(在调用反序列化之前)不会阻塞时间戳格式?有没有办法可以配置/与 Swagger 代码生成接口以适应服务器的响应?
java - 解析日期字符串返回错误的月份
我尝试解析日期字符串,但总是得到错误的月份。这是我的代码。
这是从日历中选择日期的代码
这是我想解析数据的时候
每当我从日历输入日期时,它总是显示错误的月份。例如,我选择 May 但在系统中读取 April。感谢所有愿意提供帮助的人。
android - Android 错误“org.threeten.bp.temporal.UnsupportedTemporalTypeException:不支持的单位:秒”
我正在使用 'com.jakewharton.threetenabp:threetenabp:1.2.4' 库为较低的 API 版本使用较新的功能 DateTimeFormatter。
我有一种情况,我必须首先转换 JSON 响应中的日期,即“2020-07-23T00:00:00.000Z”这种格式。
然后我必须得到开始和结束日期之间的秒数才能启动计数器。
这是我创建的解决方案:
我收到错误“org.threeten.bp.temporal.UnsupportedTemporalTypeException:不支持的单位:秒”
我正在调用适配器内部的方法,我认为这可能是导致问题的原因。
这是我的适配器代码:
是的,我已经在 AndroidThreeTen.init(getActivity());之类的片段中对其进行了初始化。
我是这种时间和日期格式的新手。一些帮助将不胜感激。
java - 日期:getDisplayName 方法仅在 CI 上将点字符添加到 dayOfWeek
与在本地运行 UnitTest 相比,调用localDate.getDayOfWeek().getDisplayName
在 CircleCI 上运行的 UnitTest 返回不同的值。
这是简化的示例代码:
dayOfWeek
包含一个“。” 仅在 CI 上,但我不明白为什么以及如何(正确地)修复它。
这是 UnitTest 的错误日志:
提示:我正在使用ThreeTen Android Backport
更新 正如@OleV.V.和@Arvind Kumar Avinash 所提到的,不同行为(本地和CI)的原因是JDK版本(本地8.x和CI 11.x)的差异。
这让我的部分问题悬而未决:“如何正确解决这个问题?” 这是在我的 CI docker 映像上更改 JDK 版本的正确/唯一方法?
kotlin - 如何稳定片状 DateTimeFormatter#ofLocalizedDateTime 测试?
给定以下基于ThreeTenBp的DateFormatter
:
我在 GNOME 终端 shell ( LANG=en_US.UTF-8
) 中的 Ubuntu 20.04 上运行以下测试:
它成功了。
当我在 Android Studio 4.2 Beta 3 或 Android Studio 2020.3.1 Canary 4 中运行它时,它失败并出现以下错误:
org.junit.ComparisonFailure:
预期:“1/22/19 1:00 AM”
实际:“1/22/19,1:00 AM”
截至 2021 年 1 月 16 日的 Java 新闻
基于 Ole VV 的评论和回答,我发现测试在 shell 中的行为因 Java 版本而异。Gradle 拿起JAVA_HOME
- 因此我需要更新环境变量。请注意,将符号链接更改为java
可执行文件 viasudo update-alternatives --config java
无效。
Java/JRE 9 不适用于此 Ubuntu 版本。
解决方案:Android Studio 中的 Java/JDK
在 IDE 中,我还可以通过以下方式更改JDK location
项目的File > Project Structure ... > SDK location
:
一旦我从预配置的 JDK 11(在 IDE 的安装文件夹中)更改为 JDK 8 - 然后测试成功!
有关的
java - 如何解决 Android Studio 中 org.threeten 的重复类错误?
导入后我开始遇到这个问题
我在threeten 和threeten-no-tzdb 模块之间遇到了许多重复的类错误。
我试过使用
在我的顶级 build.gradle 中,它解决了重复的类错误,但随后我的 materialcalendarview 给了我一个新错误
那里的功能看起来像这样
任何想法如何解决这一问题?有没有办法只排除 no-tzdb 版本?
java - 创建类型转换器以将 Int 时间戳转换为 LocalDate
解决此问题的最佳方法是什么。我正在使用 2 个不同的 API,一个将日期作为字符串返回,另一个将日期作为 Int 时间戳返回,格式为 162000360
我在 Date/Time 类中使用了 ThreeTen backport。我已经成功地为我作为字符串返回的日期创建了一个类型转换器 - 在下面提供
我正在努力为 Int 时间戳复制相同的内容,因为 DateTimeFormatter 需要将字符串传递给它并且不允许 Int。任何帮助深表感谢
编辑:尝试了以下实现
可能有点绕,但希望它工作正常