我非常抱歉,如果以前曾经问过这个问题,我已经尝试过寻找能够解答我的问题而却找不到的东西。
问题是: 让我们说我有一个看起来像这样的字符串 - > 2017-01-05-04:44:43-06:00(格式为yyyy-MM-dd-hh:mm:ss +/- UTC) 现在我的目标是将它存储在Oracle数据库中,包括偏移量(据我所知,我需要将列定义为TIMESTAMP WITH TIME ZONE)。
那么我该如何将带有偏移的时间戳捕获到Java日期和时间对象中呢?我不打算将时间转换为UTC,我只是想按原样存储它并将其保存到DB中。
请注意我们在Java 6上,所以我不能使用java.time包,也不能使用Joda Time。所以除了这些之外的任何解决方案都会非常感激。
感谢。
答案 0 :(得分:1)
请参阅ThreeTen-Backport项目,了解Java 6和7的大部分java.time功能的后端(java.time内置于Java 8及更高版本中)。 API几乎匹配,因此当您最终迁移到Java 8或更高版本时,您只需要更改import
语句。
Joda-Time项目现在处于维护模式,但仍在积极维护。赞助商建议转移到java.time类。
使用T
替换输入字符串中间的连字符,以符合标准ISO 8601格式。默认情况下,这些标准格式在java.time类中用于解析和生成日期时间值的字符串表示。
OffsetDateTime odt = OffsetDateTime.parse( "2017-01-05T04:44:43-06:00" );
如果在此之前被问过,我非常抱歉
是的,你的问题都是重复的。请搜索Stack Overflow以获取所有问题的现有答案:
java.sql.Timestamp
,或者在Java-8之前通过count-from-epoch数字转换为Timestamp
。提示:请勿在Stack Overflow网站内搜索。当你想在Answers中搜索时,他们的搜索引擎偏向于问题。在DuckDuckGo,Google或Bing中使用site:stackoverflow.com
。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。