问题标签 [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.

0 投票
1 回答
797 浏览

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 的版本,但它没有解决问题

0 投票
1 回答
233 浏览

android - 使用 ThreetenBp 解析 DateTime 会导致 DateTimeParseException 或不完整的字符串错误

我正在尝试检查日期是否已超过一天。

我在解析字符串时得到了这些错误。

我的数据示例在这里:

我试过这些:

他们都没有工作......正确的方法是什么?

0 投票
2 回答
730 浏览

java - 如何从 UTC 日期时间到日期修改小数部分

我正在尝试将 utc 日期时间转换为本地日期时间,但小数部分有一些问题。我称 Web 服务返回一系列数据。其中一个数据是这种格式的 utc 日期时间,我必须使用这个库 org.threeten.bp,我不能使用其他库。

要将utcFormat转换为日期,我发现这段代码可以正常工作

但从我的代码中它不能很好地工作,因为返回这个日期

怎么看就不一样了。我做了一些测试,如果我在点后只留下 3 个小数,那部分代码就可以正常工作。看看这个例子:

我正在寻找一种方法来接收只有三位小数的 utc dateTime,或者通过删除多余的小数来更改 utc dateTime。对于最后一个案例,我不是如果它可以是一个好主意。

0 投票
1 回答
503 浏览

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 代码生成接口以适应服务器的响应?

0 投票
1 回答
117 浏览

java - 解析日期字符串返回错误的月份

我尝试解析日期字符串,但总是得到错误的月份。这是我的代码。

这是从日历中选择日期的代码

这是我想解析数据的时候

每当我从日历输入日期时,它总是显示错误的月份。例如,我选择 May 但在系统中读取 April。感谢所有愿意提供帮助的人。

0 投票
1 回答
376 浏览

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());之类的片段中对其进行了初始化。

我是这种时间和日期格式的新手。一些帮助将不胜感激。

0 投票
1 回答
183 浏览

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 版本的正确/唯一方法?

0 投票
1 回答
176 浏览

kotlin - 如何稳定片状 DateTimeFormatter#ofLocalizedDateTime 测试?

给定以下基于ThreeTenBpDateFormatter

我在 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位置

一旦我从预配置的 JDK 11(在 IDE 的安装文件夹中)更改为 JDK 8 - 然后测试成功

有关的

0 投票
0 回答
86 浏览

java - 如何解决 Android Studio 中 org.threeten 的重复类错误?

导入后我开始遇到这个问题

我在threeten 和threeten-no-tzdb 模块之间遇到了许多重复的类错误。

我试过使用

在我的顶级 build.gradle 中,它解决了重复的类错误,但随后我的 materialcalendarview 给了我一个新错误

那里的功能看起来像这样

任何想法如何解决这一问题?有没有办法只排除 no-tzdb 版本?

0 投票
1 回答
69 浏览

java - 创建类型转换器以将 Int 时间戳转换为 LocalDate

解决此问题的最佳方法是什么。我正在使用 2 个不同的 API,一个将日期作为字符串返回,另一个将日期作为 Int 时间戳返回,格式为 162000360

我在 Date/Time 类中使用了 ThreeTen backport。我已经成功地为我作为字符串返回的日期创建了一个类型转换器 - 在下面提供

我正在努力为 Int 时间戳复制相同的内容,因为 DateTimeFormatter 需要将字符串传递给它并且不允许 Int。任何帮助深表感谢

编辑:尝试了以下实现

可能有点绕,但希望它工作正常