我有一个日期&时间“20140508063630”(yyyyMMddHHmmss)格式。我想将此时间转换为EST时区。我该怎么做?如果此转换有任何API,请告诉我们。提前致谢。
答案 0 :(得分:8)
try {
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone estTime = TimeZone.getTimeZone("EST");
gmtFormat.setTimeZone(estTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("EST Time: " + gmtFormat.format(sdf.parse("20140508063630")));
} catch (ParseException e) {
e.printStackTrace();
}
答案 1 :(得分:2)
由于您已经标记了java-time的问题,因此您应该得到java.time
个答案。
String dateAndTime = "20140508063630";
DateTimeFormatter parseFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
ZonedDateTime coralHarbourDateTime = LocalDateTime.parse(dateAndTime, parseFormatter)
.atOffset(ZoneOffset.UTC)
.atZoneSameInstant(ZoneId.of("America/Coral_Harbour"));
System.out.println(coralHarbourDateTime);
打印
2014-05-08T01:36:30-05:00[America/Coral_Harbour]
但有很多事情需要注意:
java.time
似乎即将推出Android,但截至发稿时,大多数Android手机都没有。不过,不要绝望,得到ThreeTenABP并使用Android上的课程。SimpleDateFormat
和TimeZone
类已经过时了,所以如果您的Android应用正在处理日期和/或时间和/或时区,我建议使用ThreeTenABP和现代课程作为程序员友好和未来的方式去。2014-05-08T02:36:30-04:00[America/Montreal]
,例如,时区偏移-4而不是-5。答案 2 :(得分:1)
以下代码将转换日期从一个时区转换为另一个具有任何日期格式的时区
{ String parsedDate = null;
try {
SimpleDateFormat dbDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
dbDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = dbUtcDateFormat.parse("20140508063630");
SimpleDateFormat userDateFormat = new SimpleDateFormat(yyyyMMddHHmmss);
userDateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
parsedDate = userDateFormat.format(date);
} catch (Throwable t) {
logger.warn("Date Parse Faied : ", t);
}
return parsedDate;
}