Java 为Timestamp.valueOf获取不同的值
我正在尝试通过执行以下操作获取2018-09-04 13:43:32.922000的时间戳值Java 为Timestamp.valueOf获取不同的值,java,scala,Java,Scala,我正在尝试通过执行以下操作获取2018-09-04 13:43:32.922000的时间戳值 Timestamp.valueOf(“2018-09-04 13:43:32.922000”) 我的预期产出是2018-09-04 13:43:32.922 但是我得到2018-09-04 01:13:32.922 这可能是由于不同的时区,因为我在印度的团队得到了确切的结果,但我在加利福尼亚得到了不同的结果。 建议可以解决此问题的更改。我不认为问题是由于不同的时区造成的。只是你得到的输出是24小时格式的
Timestamp.valueOf(“2018-09-04 13:43:32.922000”)
我的预期产出是2018-09-04 13:43:32.922
但是我得到2018-09-04 01:13:32.922
这可能是由于不同的时区,因为我在印度的团队得到了确切的结果,但我在加利福尼亚得到了不同的结果。
建议可以解决此问题的更改。我不认为问题是由于不同的时区造成的。只是你得到的输出是24小时格式的,需要转换成12小时格式。请参阅将时间转换为12小时格式。tl;博士 java.time 建议可以解决此问题的更改 切勿使用
java.sql.Timestamp
该类的许多缺陷之一是,在解析时无法解释其行为。您的JVM当前的默认时区似乎正在被静默地应用,并进行了一些调整。但这个问题还没有定论
多年前,随着JSR 310的采用,这个设计糟糕的类被现代的java.time类所取代,特别是Instant
和OffsetDateTime
将输入字符串更改为标准格式,用“<代码> t>代码>替换中间的空间。
String input = "2018-09-04 13:43:32.922000".replace( " " , "T" ) ;
您的输入是否旨在表示一个瞬间,即零的偏移量?如果是,请附加一个Z
(发音为Zulu)
Instant
类表示UTC中的一个时刻,根据定义总是UTC
Instant instant = Instant.parse( input ) ;
您可以选择接受即时
对象
myPreparedStatement.setObject( instant ) ;
如果您的JDBC驱动程序不支持Instant
,请使用OffsetDateTime
。JDBC4.2及更高版本中需要支持
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
myPreparedStatement.setObject( odt ) ;
请注意,JVM在运行时的当前默认时区是如何无关的,对上面的代码没有影响
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类
从哪里获得java.time类
- 、和更高版本-标准Java API的一部分,带有捆绑实现。
- Java9添加了一些次要功能和修复
- 及
- 大多数java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(不要使用
。使用Timestamp.valueOf
它允许指定数据的格式和时区。差异为12小时30分钟,涉及印度(偏移量+05:30)很有可能这确实是一个时区问题。过时的DateTimeFormatter
类不是时区的朋友。没有代码我们无法回答。请问,你能不能?有可能在一台机器上我得到24小时格式,而在另一台机器上,我得到12小时格式?如果你看到的话,差别是12小时30分钟。所以,我是请相信情况并非如此,否则会有12小时的差异。Timestamp
始终以24小时格式打印。对我来说工作完美无瑕。did“Timestamp.from(Instant.parse(“2018-09-04T08:13:32.922000Z”)”Timestamp.toString
myPreparedStatement.setObject( instant ) ;
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ; myPreparedStatement.setObject( odt ) ;