2017-05-04 67 views
0

如何转换,日月日HH:mm:ss时间戳到oracle日期?如何将日月日期时间转换为oracle日期?格式为Wed May 03 00:00:00 IST 2017

格式为:星期三05月03日00:00:00北京时间2017年

我得到的日期和时间格式以上,我需要这种格式将其存储在数据库(甲骨文),因为在后面我必须获取日期并将其转换为石英调度程序的玉米表达式。

+1

你的意思是你想分析这种格式(比如使用'DateTimeFormatter'),然后有一个'java.sql.Date'对象? – KevinO

回答

0

假设问题是要转换为java.sql.Date对象,下面的代码显示如何解析给定的输入。

public static void main(String[] args) 
{ 
    final String inp = "Wed May 03 00:00:00 IST 2017"; 

    final String parseFmt = "E MMM dd HH:mm:ss z yyyy"; 

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern(parseFmt); 

    TemporalAccessor ta = dtf.parse(inp); 

    ZonedDateTime zdt = ZonedDateTime.from(ta); 



    java.sql.Date sqlDate = 
      new java.sql.Date(zdt.toInstant().toEpochMilli()); 

    System.out.println(inp); 
    System.out.println(zdt); 
    System.out.println(zdt.toInstant()); 
    System.out.println(sqlDate); 
} 

输出:

Wed May 03 00:00:00 IST 2017 
2017-05-03T00:00+03:00[Asia/Jerusalem] 
2017-05-02T21:00:00Z 
2017-05-02 
0

你可以做如下

  1. 使用SimpleDateFormat的解析,并得到一个java.util.Date对象
  2. 现在你可以转换的java.util .Date to java.sql.Timestamp using java.sql.Timestamp(date.getTime())

希望这有助于

+0

建议不好。这些令人困惑的设计错误的类现在已经成为遗留问题,取而代之的是java.time类。 –

0

使用对象,而不是字符串

我需要这种格式将其存储在数据库(Oracle)的

不,你不知道。

使用日期 - 时间值时,不需要字符串。对于日期时间值,请使用日期时间对象。

使用java.time

对于日期时间对象,只使用java.time类。避免使用诸如java.util.Date,java.sql.Date和java.sql.Timestamp之类的旧类,因为它们令人困惑,麻烦并且设计不佳。

避免3-4个字母的伪时区,如IST。它们不是实时区域,不是标准化的,并且不是唯一的(!)。 “IST”是指“印度标准时间”还是“爱尔兰标准时间”?使用real time zones,格式为continent/region,如Asia/KolkataEurope/Dublin

LocalDate ld = LocalDate.of(2017 , Month.MAY , 3) ; 
ZoneId z = ZoneId.of("Asia/Kolkata"); 
ZonedDateTime zdt = ld.atStartOfDay(z) ; 

JDBC

JDBC的目的是你的数据库的数据类型和数据类型的Java之间进行调解。

如果您的JDBC驱动程序符合JDBC 4.2或更高版本,则可以直接传递/获取这些java.time对象。使用PreparedStatement::setObjectResultSet::getObject

相关问题