我正在尝试将 UTC 的长时间戳转换为东部标准时间并且完全丢失了。任何提示都会很棒!

时间格式应为:11/4/03 8:14 PM
提前致谢!

TimeZone utcTZ= TimeZone.getTimeZone("UTC");
Calendar utcCal= Calendar.getInstance(utcTZ);
utcCal.setTimeInMillis(utcAsLongValue);



import java.text.SimpleDateFormat;
import java.util.Date;

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
sdf.setTimeZone(utcTZ);
Date utcDate= utcCal.getTime();
sdf.formatDate(utcDate);

最佳答案

昨天偶尔写了以下方法可以帮到你:

private Date shiftTimeZone(Date date, TimeZone sourceTimeZone, TimeZone targetTimeZone) {
    Calendar sourceCalendar = Calendar.getInstance();
    sourceCalendar.setTime(date);
    sourceCalendar.setTimeZone(sourceTimeZone);

    Calendar targetCalendar = Calendar.getInstance();
    for (int field : new int[] {Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND}) {
        targetCalendar.set(field, sourceCalendar.get(field));
    }
    targetCalendar.setTimeZone(targetTimeZone);

    return targetCalendar.getTime();
}

现在你只需要格式化日期。为此使用 SimpleDateFormat。这是示例:
DateFormat format = new SimpleDateFormat("dd/MM/yy hh:mm a");
format.format(date);

关于java - 在 Java 中将日期从 UTC 转换为 EST?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8559165/

10-12 00:36
查看更多