时区日期转化

本文主要介绍了三个Java方法,用于处理日期和时区的转换。包括获取指定时区的日期字符串、重新指定日期的时区(原日期不变)以及将北京时间转换为美东时间。这些方法使用了`SimpleDateFormat`和`TimeZone`类,对于理解和操作日期时区转换具有参考价值。
/**
 * 返回指定时区日期字符串
 *
 * @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;
    }
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值