【发布时间】:2011-08-22 11:45:18
【问题描述】:
我有一个广泛的日期时间转换类,但我遇到了一个我无法解决的场景:
我有一个 java.util.date:2011 年 5 月 10 日星期二 00:00:00 BST
我有一个 java.sql.time: 03:58:44
我需要创建一个 java.util.date:Tue May 10 03:58:44 BST 2011
我想出的唯一方法是:
public static Date getDate(Date date, Time time) {
Calendar calendar=Calendar.getInstance();
calendar.set(date.getYear(), date.getMonth(), date.getDay(), time.getHours(), time.getMinutes(), time.getSeconds());
return calendar.getTime();
}
完全弃用的代码,并且不起作用: java.sql.Time.getYear 处的 java.lang.IllegalArgumentException(未知来源)
有什么想法吗?
【问题讨论】:
-
如果您在该代码上遇到了该异常,那么您实际上在第一个参数上传入了
Time实例! -
joda-time 始终是在 java joda-time.sourceforge.net 中处理日期的最佳方法
-
在一个部分相关的说明中:虽然 java.util.DateAPI 的构造非常糟糕,并且应该很久以前就应该被一个健全的 API 替换(例如 Joda Time),但java.sql.Date而java.sql.Time“扩展”更糟糕:他们都不遵循Liskov substitution principle,更糟糕的是java.sql.Date甚至与它的基类有相同的简单名称。 -
我同意,我必须创建一个优化的转换类,它包含我需要的一切,并且对我来说很有意义...... java.util.date 很痛苦......但现在我只是需要一个简单的解决方案来解决这种情况。