今天的Java日期

时间:2015-09-23 11:30:03

标签: java sql date

我正在尝试生成今天的日期。但我总是得到:“1969-12-31”作为输出。

这里是我的代码:

java.util.Date d1 = new java.util.Date();

java.sql.Date sqlDate = new java.sql.Date(d1.getDate());

我想在sql表中添加它,我做错了什么?

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

d1.getDate()将提供代表当前日期的int。例如:23

您需要的是d1.getTime()

java.sql.Date sqlDate = new java.sql.Date(d1.getTime());

答案 1 :(得分:1)

java.sql.Date date = new java.sql.Date(Calendar.getInstance().getTime().getTime());

答案 2 :(得分:0)

不推荐使用getDate()函数。

试试这个:

java.util.Date d1 = new java.util.Date();

java.sql.Date sqlDate = new java.sql.Date(d1.getTime());

答案 3 :(得分:0)

java.time

在Java 8及更高版本中,您应该使用新的java.time框架。这些新课程取代了已证明非常麻烦的旧课程。

时区

请注意,时区对于确定日期至关重要。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate localDate = LocalDate.now( ZoneId );
java.sql.Date d = java.sql.Date.valueOf( localDate );

关于 java.time

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

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

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

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

从哪里获取java.time类?

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

答案 4 :(得分:-1)

java.util.date.getDate文档说该方法已被弃用,它返回的时间实际上是从1970-01-01开始的基本纪元时间。在https://en.wikipedia.org/wiki/Unix_time上了解更多关于它的信息

为了获得实际日期,您需要执行以下操作:

function