java.util.Datevs java.sql.Date:什么时候用?用哪个?用在哪?为什么?
唯一的一次使用java.sql.Date是在一个PreparedStatement.setDate。否则,使用java.util.Date。这是告诉ResultSet.getDate返回一个,java.sql.Date但它可以直接分配给一个java.util.Date。
从Java 8开始,你既不应该使用,也java.util.Date不要使用, java.sql.Date如果你完全可以避免它,而宁愿使用java.time包(基于乔达)而不是其他任何东西。如果你不在Java 8上,这里是原始的回应:
java.sql.Date - 调用使用它的库的方法/构造函数(如JDBC)。否则。您不想为不明确处理JDBC的应用程序/模块引入依赖关系到数据库库。
java.util.Date - 使用使用它的库时。否则,尽可能少的原因有几个:
这是可变的,这意味着每次将它传递给方法或从方法返回时,都必须作出防御副本。
它不能很好地处理日期,像你这样倒退的人真的认为日期处理类应该。
现在,因为juD做得不好,所以Calendar引入了可怕的课程。他们也是可变的,可怕的工作,应该避免,如果你没有任何选择。
有更好的选择,像约达时间的API(这甚至可能使成Java 7,成为新的官方日期处理API -一个快速搜索说它不会)。
如果你觉得引入像Joda这样的新的依赖关系是过时的,long那么在对象中使用时间戳字段并不是那么糟糕,尽管我自己通常在将它们传递给它们的时候将它们包装在了juD中,为了类型安全和作为文档。