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

时间:2015-11-04 10:03:21

标签: java sql date

我有一年中的一些日子。 (今天的当天数是308.)我想将这个数字转换为SQL格式的日期(YYYY/MM/DD)。我可以在java中做到吗?

提前谢谢。

2 个答案:

答案 0 :(得分:4)

TL;博士

Year.of( 2018 )
    .atDay( 308 )
  

2018年11月4日

java.time

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

LocalDate类表示没有时间且没有时区的仅限日期的值。

Year课程代表一年。并且包含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年: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.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

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

答案 1 :(得分:1)

int dayOfYear = 112;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, dayOfYear);
SimpleDateFormat sdf = new SimpleDateFormat("YYYY/MM/dd");
System.out.println("Day of year " + dayOfYear + " = " + sdf.format(calendar.getTime()));

希望以上片段可以帮助你

相关问题