Java Oracle日期的SimpleDataFormat(带时区的时间戳)

Java Oracle日期的SimpleDataFormat(带时区的时间戳),java,oracle,simpledateformat,splunk,Java,Oracle,Simpledateformat,Splunk,我目前正在尝试使用语法解析来自Oracle数据库的Datestring(带有时区的时间戳)。这是必需的,因为生成的模式应该在Splunks DBConnect中使用。我接收的字符串的格式为: 2018-07-24 14:00:02.876611 +0:00 我目前正在尝试使用 yyyy-MM-dd HH:mm:ss.S XXX 作为模式字符串(末尾的最小示例)。据我所知,问题在于时区没有前导0(例如+00:00可以工作)。 是否仍然有一种方法可以使用带有简单模式的SimpleDataForm

我目前正在尝试使用语法解析来自Oracle数据库的Datestring(带有时区的时间戳)。这是必需的,因为生成的模式应该在Splunks DBConnect中使用。我接收的字符串的格式为:

2018-07-24 14:00:02.876611 +0:00
我目前正在尝试使用

yyyy-MM-dd HH:mm:ss.S XXX
作为模式字符串(末尾的最小示例)。据我所知,问题在于时区没有前导0(例如+00:00可以工作)。 是否仍然有一种方法可以使用带有简单模式的SimpleDataFormat解析日期

事先非常感谢

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Tester {
    public static void main(String[] args) {
        String input = "2018-07-24 14:00:02.876611 +0:00";
        String parser = "yyyy-MM-dd HH:mm:ss.S XXX";
        SimpleDateFormat format = new SimpleDateFormat(parser);
        try {
            Date date = format.parse(input);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
更新一: 在我的观点中,由于使用SimpleDataFormat模式的局限性,这不是一个重复的问题。既不说明是否可以使用SimpleDataFormat完成,也不说明(如果可能)必须如何创建模式。它提供了使用另一个库(不可能)或使用预处理(不可能)的解决方案

更新二: 由于对数据库的访问受到限制,无法对数据进行预处理。在Splunk中添加进一步预处理的可能性也是不可能的

由于DBConnect(将要使用该模式的应用程序)的开发方式,它需要一个与SimpleDataFormat兼容的模式


我知道这个问题的答案是,这是不可能的。

可能的复制显然,这不能单纯用
SimpleDateFormat
来完成。根本没有合适的模式来处理一位数的偏移量。恐怕在将日期字符串传递给
SimpleDateFormat
之前,您需要对其进行预处理。而且
SimpleDateFormat
永远无法解析6位数的秒(微秒)。在最好的情况下,您不会从Oracle获得日期时间字符串。您将获得一个实时的datetime对象,如
Instant
OffsetDateTime
。现代JDBC驱动程序和现代JPA实现很乐意为您提供这一点。您是否可以从Oracle/Splunk集成的角度重新阐述您的问题(例如,“如何将此查询结果从Oracle传递到Splunk DBConnect”)?也许,有人可以提供更多的细节(例如数据来自何处)作为替代方案。你的问题可能是一个例子。