我无法理解java.sql.date的文档

I'm unable to understand the documentation for java.sql.date

我正在努力解决跨SQL、JDBC、JVM和Linux的时区问题。

我可以看到我需要从jdbc中获取的类是java.sql.date。所以我读了文件,却什么都做不到。

据我所知,java.util.data和java.sql.date自epoch以来都保持了数毫秒的时间。

当我查看java.sql.date的构造函数定义时,它说

"使用给定的毫秒时间值构造日期对象。如果给定的毫秒值包含时间信息,则驱动程序将时间组件设置为默认时间区(运行应用程序的Java虚拟机的时区)对应于零GMT的时间。

好的-问题1-"如果给定的毫秒值包含时间信息"的含义是什么-显然它包含一些时间信息!!!!

他们的意思是"如果你给程序的毫秒数不代表一个精确的日边界,考虑到闰秒等"??这听起来是一个相当随机的测试来满足/失败!

或者他们的意思是"为了上帝的缘故,在接近中午的时候给我们一些东西,我们会把它截短到有问题的一天的开始?

问题2——用词来说,这个奇怪的条款是"为了"什么?很明显,这是为了使某些齿轮正确啮合的行为——但它们是什么齿轮?


java.sql.Datejava.sql.Time和延伸,java.sql.Timestampjava.util.Date,然而:

  • 蛛网膜下腔出血(SAH)milliseconds圆形java.sql.Date午夜-这是"零的日期与时间
  • java.sql.TimeSAH milliseconds小于24小时,它是像1970-01-01java.util.Date在线
  • 蛛网膜下腔出血(SAH)的日期和时间java.sql.Timestamp全样调节java.util.Date


java.sql.date表示只有日期,没有任何信息在它的时间。java.sql.time应使用时间。


如果我是你,我会避免使用millisecond构造函数。相反,使用Date.valueOf