java - 不使用 SimpleDateFormat 将日期字符串转换为另一个日期字符串的最有效方法
问题描述
我想将一个日期字符串转换为另一个日期字符串。
例如,我得到一个输入日期"31-10-2018"
,我想将其转换为"2018-10-31"
.
我已经有了关于我收到日期的输入模式的信息,即“dd-MM-yyyy”。
还有我需要输出日期字符串的输出模式,即"yyyy-MM-dd"。
但条件是我不想使用SimpleDateFormat
也不想使用parse()
或使用 SimpleDateFormat 的 Format 方法。
如前所述,我得到字符串形式的输入,并且只需要字符串形式的输出。
实现这一目标的最有效方法是什么?
我想就这个问题补充几点:-
我知道 java 的 SimpleDateFormat 在性能方面就足够了,但我不想使用它,因为它需要创建许多我不想要的附加对象,因为我有一个字符串形式的输入日期,我想将其转换为另一个细绳。
我的输入和输出格式可以不同,但我将它们作为我的方法的输入。说:-
public String getOutputString(String inputString, String inputPattern, String outputPattern) {
// logic to get the output string
}
解决方案
最简单(现在推荐)的方法:java.time
就代码的可读性和简洁性而言,这是最有效的方法,但不会对执行时间或分配的内存产生重大影响。
public static void main(String[] args) {
LocalDate localDate = LocalDate.parse("31-10-2018",
DateTimeFormatter.ofPattern("dd-MM-yyyy"));
System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));
}
输出:2018-10-31
这样,您将不需要SimpleDateFormat
或任何课程java.util
!
编辑
要选择您随后添加到问题中的未实现方法,这将是使用上面显示的方式实现的:
public String getOutputString(String inputString, String inputPattern, String outputPattern) {
return LocalDate.parse(inputString, DateTimeFormatter.ofPattern(inputPattern))
.format(DateTimeFormatter.ofPattern(outputPattern));
}
推荐阅读
- sql - 如何以正确的值将科学记数法转换为从 excel 到 sql server 的文本?
- ios - 如何使用关联类型解析协议中的泛型属性?
- kotlin - 是否可以在 Kotlin 中创建“扩展类”?
- python - 如何从数据框列中删除右侧的文本
- javascript - 使用 navigator.mediaDevices.getDisplayMedia 的 JavaScript 屏幕录像不可搜索
- python-3.x - 如何使用 django-elastic-search-dsl-drf 在弹性搜索文档中包含相关模型字段
- python - 如何使 Python 库 Ray 共享内存可写?
- javascript - Firestore 文档添加在回调中不起作用
- git - 拉取请求显示在 azure devops 中变基/合并到另一个分支后的旧提交
- django - 按变量包含模板