Joda-Time 提供了 Java 日期和时间类的优质替代品。该设计允许使用多个日历系统,同时仍然提供简单的 API。 “默认”日历是 XML 使用的 ISO8601 标准。格里高利体系、儒略体系、佛教体系、科普特体系、埃塞俄比亚体系和伊斯兰教体系也包括在内。支持的类包括时区、持续时间、格式和解析。
除了保持时区数据最新之外,Joda-time 不再处于积极开发状态。从 Java SE 8 开始,用户被要求迁移到java.time
(JSR-310) - JDK 的核心部分,它取代了该项目。对于 Android 用户,API 26+ 中添加了java.time
。需要支持较低 API 级别的项目可以使用 ThreeTenABP 库。
作为 Joda-Time 的风格,这里有一些示例代码:
public boolean isAfterPayDay ( DateTime datetime ) {
if ( datetime . getMonthOfYear () == 2 ) { // February is month 2!!
return datetime . getDayOfMonth () > 26 ;
}
return datetime . getDayOfMonth () > 28 ;
}
public Days daysToNewYear ( LocalDate fromDate ) {
LocalDate newYear = fromDate . plusYears ( 1 ). withDayOfYear ( 1 );
return Days . daysBetween ( fromDate , newYear );
}
public boolean isRentalOverdue ( DateTime datetimeRented ) {
Period rentalPeriod = new Period (). withDays ( 2 ). withHours ( 12 );
return datetimeRented . plus ( rentalPeriod ). isBeforeNow ();
}
public String getBirthMonthText ( LocalDate dateOfBirth ) {
return dateOfBirth . monthOfYear (). getAsText ( Locale . ENGLISH );
}
Joda-Time 根据商业友好型 Apache 2.0 许可证获得许可。
提供各种文档:
版本 2.13.0 是当前最新版本。该版本被认为是稳定的并且值得 2.x 标签。这取决于 JDK 1.5 或更高版本。
可在 Maven 中央存储库中找到
Maven 配置:
< dependency >
< groupId >joda-time</ groupId >
< artifactId >joda-time</ artifactId >
< version >2.13.0</ version >
</ dependency >
梯度配置:
compile ' joda-time:joda-time:2.13.0 '
GitHub上的相关项目:
其他相关项目:
作为 Tidelift 订阅的一部分提供。
Joda 和数千个其他软件包的维护者正在与 Tidelift 合作,提供一项企业订阅,涵盖您使用的所有开源软件。
如果您想要开源的灵活性和商业级软件的信心,那么这就是适合您的。
了解更多
请使用 Stack Overflow 来解答一般使用问题。当您想帮助推进项目时,应该使用 GitHub 问题和拉取请求。
任何支持该项目的捐款均通过 OpenCollective 接受。
要报告安全漏洞,请使用 Tidelift 安全联系人。 Tidelift 将协调修复和披露。
Joda-Time 是使用标准 GitHub 工具开发的。 checkstyle 文件可用,PR 必须遵守它。可以使用 Apache Maven 构建项目,例如mvn clean install
。持续集成使用 GitHub Actions 进行。单元测试是用 JUnit 编写的,并作为构建和持续集成的一部分运行。通过 PR 进行的更改必须包括适当的测试覆盖率。
请注意,Joda-Time 被认为是一个基本上“完成”的项目。没有计划进行重大改进。如果使用 Java SE 8,请迁移到 java.time (JSR-310)。
mvn clean deploy -Doss.repo -Dgpg.passphrase=""