Java日期格式转换

时间:2010-07-06 16:57:53

标签: java mysql date

我正在从请求对象中提取三个表单字段输入。日,月和年。

这个月的第11天是11天  十二月份将是12月  年份将是2010年代表今年。

我需要将它转换为Java Date对象,但由于已经更改了很多,我不确定将它存储在java对象中的最佳方法是什么。我需要格式为

YYYY-MM-DD HH:MM:SS
所以我可以比较MySql数据库中的日期。

3 个答案:

答案 0 :(得分:4)

SimpleDateFormat可以将字符串转换为java.util.Date个对象。 Date类有一个getTime()方法,以unix时间格式生成日期(自1970年1月1日,格林威治标准时间00:00:00以来的毫秒数)。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
long unix_time = dateFormat.parse(date).getTime();

您可以在MySQL中使用UNIX_TIMESTAMP()来转换为unix时间。

mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
        -> 1196440219

答案 1 :(得分:1)

  

我需要将其转换为Java Date对象

实例化GregorianCalendar,设置相应的字段,然后在其上调用getTime。由于它听起来并不像是在收集时间信息,因此您可能希望明确清除这些字段,或者您将获得构建该对象的当前时间。

  

我需要格式[...],所以我可以比较MySql数据库中的日期。

您不应该以文本格式来比较日期。使用数据库的本机日期/时间类型创建列,并使用Java中的Date类型。 JDBC应该在您进出数据库时为您进行转换。

日期格式化仅应用于输出到外部进程或显示。请参阅Bakkal使用SimpleDateFormat进行格式化的答案。

答案 2 :(得分:0)

TL;博士

myPreparedStatement.setObject(         // Exchange java.time object with database directly, with JDBC 4.2 and later.
    … , 
    LocalDate.of( 2012 , 12 , 10 )     // Instantiate a `java.time.LocalDate` object.
)

java.time

现代方法使用 java.time 类。

对于仅日期值,如果数据库列类似于SQL标准DATE类型,请在Java中使用LocalDate类。

LocalDate ld = LocalDate.of( 2012 , 12 , 10 ) ; 

或使用Month枚举对象。

LocalDate ld = LocalDate.of( 2012 , Month.DECEMBER , 10 ) ; 

如果JDBC driver符合JDBC 4.2或更高版本,您可以直接与数据库交换java.time对象。不需要单纯的字符串;使用智能对象。

myPreparedStatement.setObject( … , ld ) ;

检索。

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

关于 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