我在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")
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)
例
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句