java - LocalDate 和 DateTimeFormatter 的 Java 6 替代方案
问题描述
在 Java 8 项目中,我可以这样解析日期:
LocalDate.parse(
newDateString,
DateTimeFormatter.ofPattern(expectedDateFormat)
)
.format(
DateTimeFormatter.ofPattern(expectedDBDateFormat)
);
我的问题是我有一个 Java 6 项目,并且LocalDate
没有DateTimeFormatter
为 Java 6 定义。
如何解析 Java 6 项目中的日期?
解决方案
有3个主要选择:
使用ThreeTen-Backport (推荐)
优势:与 Java 8 Time API (JSR-310) 基本相同的 API。迁移到 Java 8 非常容易。
缺点:包名不同,不是JSR-310的完整实现。import org.threeten.bp.LocalDate; import org.threeten.bp.format.DateTimeFormatter; LocalDate.parse(input, DateTimeFormatter.ofPattern(inputFormat)) .format(DateTimeFormatter.ofPattern(outputFormat));
使用Joda-Time
优势:适用于任何 Java 版本。
缺点:已弃用,支持 Java 8 Time API (JSR-310)。import org.joda.time.LocalDate; import org.joda.time.format.DateTimeFormat; LocalDate.parse(input, DateTimeFormat.forPattern(inputFormat)) .toString(DateTimeFormat.forPattern(outputFormat));
使用 Java 6
Date
和 优势:将适用于所有未来的 Java 版本。没有第三方库。 缺点:API 存在缺陷,这就是创建 Java 8 Time API (JSR-310) 的原因。SimpleDateFormat
import java.text.SimpleDateFormat; new SimpleDateFormat(outputFormat).format( new SimpleDateFormat(inputFormat).parse(input));
作为比较,您的 Java 8 代码是:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
LocalDate.parse(input, DateTimeFormatter.ofPattern(inputFormat))
.format(DateTimeFormatter.ofPattern(outputFormat));
推荐阅读
- php - 使用 PHP 从 MySQL 向所有电子邮件地址发送电子邮件
- visual-studio - dtls 握手失败并出现警报解密错误
- c# - 从控制器外部获取动作的虚拟路径
- java - 如何在 Android Material Stepper 中验证表单?
- excel - 将数据从工作表中的单元格复制到另一个工作表中的下一个可用行
- c# - 根据用户角色重定向到某些网页不起作用
- c++ - 为什么 c++ 使用 throw() 关键字来指示函数不会抛出任何异常
- c# - 登录 sql vs files vs aws,这在 c# 应用程序中更快
- java - 龙目岛建造者模式问题
- postgresql - Postgres 远程连接