list转date是Java开发经常使用到的,下面给大家介绍3种常用的list转date方法@mikechen
使用 SimpleDateFormat
我们可以使用 SimpleDateFormat
来指定日期字符串的格式,然后使用 parse
方法将字符串转换为日期对象。
如下所示:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class StringToDateExample { public static void main(String[] args) { String dateString = "2023-09-11"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = dateFormat.parse(dateString); System.out.println("转换后的日期:" + date); } catch (ParseException e) { e.printStackTrace(); } } }
运行结果:
转换后的日期:Mon Sep 11 00:00:00 UTC 2023
使用 SimpleDateFormat优势:
- 简单易懂,适用于基本的日期格式。
- Java 7及更早版本的标准解决方案。
使用 SimpleDateFormat劣势:
- 不是线程安全的,需要谨慎在多线程环境中使用。
- 缺乏对日期时间的灵活性和精确性。
使用 DateTimeFormatter
在Java 8及更高版本中,推荐使用java.time包中的LocalDate和DateTimeFormatter来执行日期转换。
如下所示:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class StringToDateExample { public static void main(String[] args) { String dateString = "2023-09-11"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(dateString, formatter); System.out.println("转换后的日期:" + date); } }
DateTimeFormatter允许您指定日期字符串的格式,而LocalDate是线程安全的日期类。
运行结果:
转换后的日期:2023-09-11
使用 DateTimeFormatter 优势:
- 线程安全:java.time包中的类是线程安全的。
- 支持更丰富的日期时间处理,包括时区、时间差等。
- 支持更灵活的日期字符串解析。
使用 DateTimeFormatter 劣势:
需要Java 8或更高版本的支持,如果项目仍在使用旧版Java,需要考虑兼容性。
使用第三方库Apache Commons
还可以考虑使用第三方库,来执行日期字符串到日期对象的转换。
例如:使用Apache Commons Lang库的DateUtils类。
如下所示:
import org.apache.commons.lang3.time.DateUtils; import java.text.ParseException; import java.util.Date; public class StringToDateExample { public static void main(String[] args) { String dateString = "2023-09-11"; String[] patterns = {"yyyy-MM-dd"}; try { Date date = DateUtils.parseDateStrictly(dateString, patterns); System.out.println("转换后的日期:" + date); } catch (ParseException e) { e.printStackTrace(); } } }
运行结果:
转换后的日期:Mon Sep 11 00:00:00 UTC 2023
使用第三方库Apache Commons优势:
- 提供了简单易用的方法,适用于多种日期格式。
- 灵活性,可以处理不同类型的日期字符串。
使用第三方库Apache Commons劣势:
- 需要将第三方库添加到项目依赖中,可能需要一些学习成本。
- 不一定支持所有高级日期时间操作。
如果你的项目使用的是Java 8或更高版本,强烈建议使用java.time包中的类和DateTimeFormatter,因为它们提供了更多的功能和线程安全性。
作者简介
陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!