[英]Valid TimeStamp difference between JDK 6 & JDK 7
以下语句在Java 7中有效吗?
Timestamp.valueOf("0000-00-00 00:00:00.000000");
因为使用JDK 1.6构建上面的代码可以正常工作,但是在使用JDK 1.7进行相同操作时,我得到了:
时间戳记格式必须为yyyy-mm-dd hh:mm:ss [.fffffffff]
它在语法上是有效的Java代码,但我不希望它在执行时起作用:
我会使用"0001-01-01 00:00:00.000000"
-这不会引发异常。 那当然是,如果您确实确实需要这种东西-如果在没有“真实”数据的情况下使用此魔术值,那么也许您需要一个可为空的列呢?
在Java 6和Java 7之间, Timestamp
类的规范已更改。
从Javadoc中获取valueof
方法(Java 7版本)
抛出:
IllegalArgumentException-如果给定参数的格式不为yyyy- [m] m- [d] d hh:mm:ss [.f ...]
但是Java 6 Javadoc中缺少这句话。 我认为这意味着Java 6 Timestamp
类对可以传递给此方法的String更为宽容。
是的,它是有效的(在编译时)。 它已经是这种格式了。
但是,这并不排除您在运行时遇到一些问题的选项。
因此,如果MM和dd中的任何一个为00,它将引发此异常。
异常消息有点误导恕我直言
(我的意思是说:
在运行时显示“无效的月份” /“无效的月份”)。
请注意,如果您指定此:
Timestamp ts = Timestamp.valueOf("0000-01-01 00:00:00.000000");
解析的ts
值实际上是
0001-01-01 00:00:00.000000
因此,为避免此类意外,我将确保
我指定一些有效的yyyy mm和dd值作为
似乎时间戳正在做一些转换,
在内部,当并非所有值(yyyy,mm,dd)都有效时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.