我正在尝试将JSON对象转换为日期并将其写入数据库。但是,将日期转换为EST
的代码不起作用。将日期转换为EST
的最佳方法是什么?
JSON条目
"custom_date_1": "2019-05-19","
转化代码
int id;
Date trainingDate;
SimpleDateFormat format = new SimpleDateFormat("DD-MM-YY", Locale.US);
TimeZone tz = TimeZone.getTimeZone("EST");
format.setTimeZone(tz);
logger.info("custom_date_1: {}", object.getString("custom_date_1"));
try {
id= Integer.parseInt(object.getString("employee_number"));
trainingDate = format.parse(object.getString("custom_date_1"));
//Still says GMT
logger.info("trainingDate: {}", trainingDate);
map.put("employee_number", id);
map.put("custom_date_1", trainingDate);
} catch (ParseException e) {
e.printStackTrace();
}
日志声明
2019-06-10 14:00:00,226 INFO custom_date_1: 2019-05-19
2019-06-10 14:00:00,226 INFO trainingDate: Sun Dec 30 05:00:00 GMT 2018
答案 0 :(得分:2)
myPreparedStatement.setObject( // In JDBC 4.2 and later, exchange *java.time* objects with your database. Use `PreparedStatement` to avoid SQL Injection attacks.
… , // Specify which `?` placeholder to replace in your SQL statement.
LocalDate.parse( "2019-05-19" ) // Parse your standard ISO 8601 formatted input string as a date-only value represented in the `LocalDate` class.
)
“ custom_date_1”:“ 2019-05-19”,
您的输入字符串为标准ISO 8601格式。解析/生成字符串时, java.time 类中默认使用这些标准格式。因此,无需指定格式化模式。
LocalDate ld = LocalDate.parse( "2019-05-19" ) ;
此处的时区无关紧要。因此,您的问题相当令人困惑。
我正在尝试将JSON对象转换为日期并将其写入数据库。
从JDBC 4.2开始,我们可以与数据库交换 java.time 对象。数据库中用于此仅日期值的列(无日期且无时区)应为类似于标准SQL类型DATE
的类型。
myPreparedStatement.setObject( … , ld ) ;
检索。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
答案 1 :(得分:0)
从Java 8开始,您应该使用LocalDate
和LocalDateTime
,以便您可以使用
LocalDateTime.atZone(ZoneId zoneId)
例如
LocalDateTime date = LocalDateTime.parse("2019-06-10T12:00:00");
ZonedDateTime date2 = date.atZone(ZoneId.systemDefault());
答案 2 :(得分:0)
请使用以下日期格式
SimpleDateFormat格式=新的SimpleDateFormat(“ yyyy-MM-dd”,Locale.US);
Date trainingDate;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
TimeZone tz = TimeZone.getTimeZone("EST");
format.setTimeZone(tz);
String strDate = "2019-05-19";
try {
trainingDate = format.parse(strDate);
System.out.println(trainingDate);
} catch (ParseException e) {
e.printStackTrace();
}