Java - 日期时区转换

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我正在尝试将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
提问于
用户回答回答于

请使用以下日期格式

SimpleDateFormat format = new 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();
        }
用户回答回答于

从Java 8开始,您应该使用LocalDateLocalDateTime,因此您可以使用。进行时区转换

LocalDateTime.atZone(ZoneId zoneId)

例如

LocalDateTime date = LocalDateTime.parse("2019-06-10T12:00:00"); 
ZonedDateTime date2 = date.atZone(ZoneId.systemDefault());

扫码关注云+社区

领取腾讯云代金券