Java中日期对象的ISO 8601日期格式字符串
我试图只搜索ISO 8601日期的不同格式的答案,但无法识别包含这些细节的答案或材料Java中日期对象的ISO 8601日期格式字符串,java,date,Java,Date,我试图只搜索ISO 8601日期的不同格式的答案,但无法识别包含这些细节的答案或材料 我正在尝试接收ISO 8601日期格式(日期仅作为其出生日期)字符串,并将其转换为日期对象,然后保存在dB中。仅yyyy-MM-dd日期格式,被视为ISO 8601日期格式。如果是这样,我可以相应地处理这个问题,但是是否有多个日期ISO 8601日期格式,如果是这样,请您指导解析给定字符串并转换为Java中的日期对象的最佳方法是什么?是的,yyyy MM dd是ISO 8601格式,用于不带时间和时区的日期 要
我正在尝试接收ISO 8601日期格式(日期仅作为其出生日期)字符串,并将其转换为日期对象,然后保存在dB中。仅yyyy-MM-dd日期格式,被视为ISO 8601日期格式。如果是这样,我可以相应地处理这个问题,但是是否有多个日期ISO 8601日期格式,如果是这样,请您指导解析给定字符串并转换为Java中的日期对象的最佳方法是什么?是的,yyyy MM dd是ISO 8601格式,用于不带时间和时区的日期 要使用JDBC 4.2或更高版本的驱动程序或Hibernate 5等现代JPA实现存储到SQL数据库中,您没有任何东西可以使用
Date
对象(无论您是指java.util.Date
还是java.SQL.Date
)。我建议您改用java.time,这是现代的java日期和时间API。用于没有时间的日期的类是LocalDate
。您可以将其存储到数据库中,而无需任何转换
LocalDate
将ISO 8601格式解析为默认格式,即不使用任何显式格式化程序:
String receivedString = "1962-11-27";
LocalDate dateOfBirth = LocalDate.parse(receivedString);
System.out.println("Date of birth is " + dateOfBirth);
LocalDate
在打印ISO 8601格式时也会返回该格式:
出生日期为1962年11月27日
不过,我还没有告诉你全部情况。yyyy-MM-dd是迄今为止最常用的扩展格式。还有一种更紧凑的基本格式,它省去了连字符:yyyyMMdd。我建议您坚持使用扩展格式获取日期字符串。如果无法执行此操作,则必须指定用于解析的格式化程序:
String receivedString = "19621127";
LocalDate dateOfBirth = LocalDate.parse(
receivedString, DateTimeFormatter.BASIC_ISO_DATE);
这将为您提供一个LocalDate
,该日期与我们之前的日期相同,并且无法区分
要使用JDBC保存到数据库中,请执行以下操作:
PreparedStatement pStmt
= yourDatabaseConnection.prepareStatement(
"insert into your_table (date_of_birth) values (?);");
pStmt.setObject(1, dateOfBirth);
int insertedRows = pStmt.executeUpdate();
注意使用的是setObject()
,而不是setDate()
链接
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
- 相关问题:
Date
对象(无论您是指java.util.Date
还是java.SQL.Date
)。我建议您改用java.time,这是现代的java日期和时间API。用于没有时间的日期的类是LocalDate
。您可以将其存储到数据库中,而无需任何转换
LocalDate
将ISO 8601格式解析为默认格式,即不使用任何显式格式化程序:
String receivedString = "1962-11-27";
LocalDate dateOfBirth = LocalDate.parse(receivedString);
System.out.println("Date of birth is " + dateOfBirth);
LocalDate
在打印ISO 8601格式时也会返回该格式:
出生日期为1962年11月27日
不过,我还没有告诉你全部情况。yyyy-MM-dd是迄今为止最常用的扩展格式。还有一种更紧凑的基本格式,它省去了连字符:yyyyMMdd。我建议您坚持使用扩展格式获取日期字符串。如果无法执行此操作,则必须指定用于解析的格式化程序:
String receivedString = "19621127";
LocalDate dateOfBirth = LocalDate.parse(
receivedString, DateTimeFormatter.BASIC_ISO_DATE);
这将为您提供一个LocalDate
,该日期与我们之前的日期相同,并且无法区分
要使用JDBC保存到数据库中,请执行以下操作:
PreparedStatement pStmt
= yourDatabaseConnection.prepareStatement(
"insert into your_table (date_of_birth) values (?);");
pStmt.setObject(1, dateOfBirth);
int insertedRows = pStmt.executeUpdate();
注意使用的是setObject()
,而不是setDate()
链接
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
- 相关问题:
yyyy-MM-dd
,例如2020-04-05请看这里(特别是“预定义的格式化程序”部分):根据if-you-only-required date(无时间),您有一些格式SO 8601的解释和示例,然后格式仅为yyyy-MM-dd
,例如2020-04-05看看这里(特别是“预定义的格式化程序”部分):,您有一些格式的解释和示例,因此8601感谢您的输入和材料!!非常感谢您的投入和材料!!