java - 将一年中的某一天转换为 Java 中的日期

标签 java sql date

我有一年中的几天。 (今天的天数是 308。)我想将这个数字转换为 SQL 格式的日期 (YYYY/MM/DD)。我可以用 Java 实现吗?

提前谢谢你。

最佳答案

tl;dr

Year.of( 2018 )
    .atDay( 308 )

2018-11-04

java.time

现代方法使用 Java 8 及更高版本中内置的 java.time 类。

LocalDate类表示没有时间和时区的纯日期值。

Year类(class)代表一年。并包括 atDay( dayOfYear )传递一年中第几天的方法。

int dayOfYear = 308 ;
Year y = Year.of( 2018 ) ;
LocalDate ld = y.atDay( dayOfYear ) ;

转储到控制台。

System.out.println( "dayOfYear: " + dayOfYear + " at year: " + y + " = " + ld ) ;

查看此 code run live at IdeOne.com .

dayOfYear: 308 at year: 2018 = 2018-11-04

至于生成特定格式的字符串,请搜索 DateTimeFormatter 类,因为已经介绍过很多次了。

顺便说一句,您的特定格式根本不是“SQL 格式”。无论如何,您应该与数据库交换对象而不仅仅是字符串。使用与 JDBC 4.2 或更高版本兼容的驱动程序时,查看 JDBC 中的 getObjectsetObject 方法。

数据库

对于 SQL 标准类型 DATE 的数据库列的 SQL 访问,使用 JDBC 4.2 或更高版本直接传递 LocalDate 对象。不要仅使用字符串来交换日期时间值。

myPreparedStatement.setObject( … , ld ) ;

检索。

LocalDate ld = myResultSet.getDate( … , LocalDate.class ) ;

Table of date-time types in Java (both modern and legacy) and in standard SQL.


关于java.time

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

Joda-Time项目,现在在maintenance mode , 建议迁移到 java.time类。

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 中搜索许多示例和解释。规范为 JSR 310 .

从哪里获得 java.time 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于java - 将一年中的某一天转换为 Java 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518874/

相关文章:

java - 如何使用 jdbc 模板在 Spring 中提交事务 ..?

java - ForkjoinPool 没有 BlockingQueue

mysql - 从表中计算每隔一行的时间差

php - Symfony2 & Doctrine : Create custom SQL-Query

date - 如何查找上周日的日期并将其保存在 Windows 批处理文件的变量中

javascript - 如何禁用过去的日期?

r - 计算 ID 为 "break variable"的特定日期的天数

javascript - 使用 Selenium 打开网页的问题

java - Android 在 Activity 和不活动时通过 Java 更改 EditText 重音的颜色

sql - 在 PostgreSQL 中查询 JSON 字段