vat*_*ada 6 java oracle datetime
我在oracle表中有一个timestamp列.存储时间我在此列中以UTC格式存储.为了检索这个时间戳,我使用Spring的JdbcTemplate,同时返回TimeStamp类型的对象.
我想在当前时区以"dd-MM-YYYY HH:mm:ss"格式获取日期时间字符串.为了实现这一点,我正在尝试以下代码:
new LocalDateTime(<retrieved TimeStamp>, <current user DateTimeZone>).toString("yyyy-MM-dd HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)
来自Joda库的LocalDateTime和DateTimeZone.
然而,这并不像预期的那样有效.代替当前用户在代码上方的时区仅为UTC提供日期时间字符串.
我错过了什么?
从数据库获取时间戳时添加 utc 日历,以便 jdbc 驱动程序可以使用此日历时区而不是默认系统时区。
//Assign utc calendar
Calendar utc= Calendar.getInstance();
utc.setTimeZone(TimeZone.getTimeZone("UTC"));
Timestamp timestamp = rs.getTimestamp("timestampcolumn", utc);
//Convert to client date time
DateTime dateTime = new DateTime(timestamp.getTime(), DateTimeZone.forID("Asia/Kolkata"));
//Format
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-YYYY HH:mm:ss");
//Change to client wall clock time
LocalDateTime localDateTime = dateTime.toLocalDateTime();
String formattedlocalDateTime = formatter.print(localDateTime)
Run Code Online (Sandbox Code Playgroud)
例子
String utcTime = "2016-06-17 14:22:02Z";
DateTimeFormatter parser = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ssZ");
DateTime dateTime = parser.parseDateTime(utcTime).withZone(DateTimeZone.forID("Asia/Kolkata"));
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-YYYY HH:mm:ss");
System.out.println(dateTime);
LocalDateTime localDateTime = dateTime.toLocalDateTime();
String formattedlocalDateTime = formatter.print(localDateTime);
System.out.println(formattedlocalDateTime);
Run Code Online (Sandbox Code Playgroud)