我正在尝试生成今天的日期。但我总是得到:“1969-12-31”作为输出。
这里是我的代码:
java.util.Date d1 = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(d1.getDate());
我想在sql表中添加它,我做错了什么?
有什么建议吗?
答案 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 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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance 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的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 4 :(得分:-1)
java.util.date.getDate文档说该方法已被弃用,它返回的时间实际上是从1970-01-01开始的基本纪元时间。在https://en.wikipedia.org/wiki/Unix_time上了解更多关于它的信息
为了获得实际日期,您需要执行以下操作:
function