解析 (yy-MM-dd) 格式的字符串日期tl;博士java.time国际标准化组织 ISO 8601LocalDate关于 java.time

2022-09-02 19:13:21

我有一个字符串,格式为“2013-09-18”。我想把它转换成java.util.Date。我正在这样做

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

转换后的当前日期为“星期三 9月18 00:00:00 IST 2013”

我想要格式为“2013-09-18”的输出

小时,分钟和秒不应该来,它应该以y-MM-dd的形式出现。


答案 1

您可能需要按如下方式进行放出。format

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse("2013-09-18");
String date=sdf.format(convertedCurrentDate );
System.out.println(date);

String convertedCurrentDate =sdf.format(sdf.parse("2013-09-18"));

输出:

2013-09-18

答案 2

tl;博士

LocalDate.parse( "2013-09-18" )

...和。。。

myLocalDate.toString()  // Example: 2013-09-18

java.time

问题和其他答案已过期。麻烦的旧旧日期时间类现在已被java.time类所取代。

国际标准化组织 ISO 8601

您的输入字符串恰好符合标准 ISO 8601 格式 YYYY-MM-DD。默认情况下,java.time 类在解析和生成日期时间值的字符串表示形式时使用 ISO 8601 格式。因此,无需指定格式设置模式。

LocalDate

LocalDate 类表示一个仅日期值,不带时间,也不带时区。

LocalDate ld = LocalDate.parse( "2013-09-18" );

关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧日期时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。

要了解更多信息,请参阅 Oracle 教程。搜索 Stack Overflow 以获取许多示例和解释。规格是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。不需要字符串,不需要类。java.sql.*

从哪里获取 java.time 类?

ThreeTen-Extra 项目通过其他类扩展了 java.time。这个项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter