时区日期转化

/**
 * 返回指定时区日期字符串
 *
 * @return
 */
public static String getDateByTimeZone(Date date, String timeZone, String strFormat) {
    if (ObjectUtils.isEmpty(timeZone)) {
        timeZone = "Asia/Shanghai";
    }
    DateFormat df = new SimpleDateFormat(strFormat);
    df.setTimeZone(TimeZone.getTimeZone(timeZone));
    return df.format(date);
}
/**
 * 日期重新指定时区(原来的日期不会变化)
 *
 * @return
 */
public static Date dateSetTimeZone(Date dt, String timeZone) {
    try {
        if (ObjectUtils.isEmpty(dt)) {
            return null;
        }
        if (ObjectUtils.isEmpty(timeZone)) {
            timeZone = "Asia/Shanghai";
        }
        String patternDatetime = "yyyy-MM-dd HH:mm:ss";
        String strDt = DateUtil.format(dt, patternDatetime);
        DateFormat df = new SimpleDateFormat(patternDatetime);
        TimeZone tz = TimeZone.getTimeZone(timeZone);
        df.setTimeZone(tz);
        return df.parse(strDt);
    } catch (Exception e) {
        return null;
    }
}

/**
 * 北京时间转化成美东时间(原来的日期会变化)
 *
 * @return
 */
public static Date dateChangeAmericaEastTimeZone(Date date) {
    try {
        Date beiJingTime = dateSetTimeZone(date,"");
        String dateStr = getDateByTimeZone(beiJingTime, "America/New_York", "yyyy-MM-dd HH:mm:ss");
        return DateUtil.parse(dateStr);
    } catch (Exception e) {
        return null;
    }
}

你可能感兴趣的:(java)