You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使SimpleDateFormat输出含冒号的时区日期格式?

解决时区格式带冒号的日期格式化问题

方案一:使用SimpleDateFormat的XXX模式(Java 7+)

SimpleDateFormat的Z模式输出不带冒号的时区偏移(如+0200),而Java 7及以上版本支持XXX模式,可输出带冒号的偏移格式(如+02:00)。只需将原模式字符串修改为yyyy-MM-dd'T'HH:mm:ssXXX即可。

修改后的代码示例:

public class testDate {

    public static final DateFormat PATTERN = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

    public static String calendarToString(final Calendar dateToConvert, final DateFormat df) {
        return df.format(dateToConvert.getTime());
    }

    public static void main(String[] args) {
        Calendar effectiveDate = Calendar.getInstance();
        System.out.println(calendarToString(effectiveDate, PATTERN));
    }
}

方案二:使用Java 8+推荐的java.time API(更优)

Date和Calendar类已被Java 8引入的java.time包取代,该包API更简洁、线程安全且功能完善。可以使用ZonedDateTime结合DateTimeFormatter实现需求,甚至直接用预定义的ISO_OFFSET_DATE_TIME格式(完全匹配你需要的输出样式)。

代码示例:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class testDate {

    public static final DateTimeFormatter PATTERN = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    // 也可自定义模式:DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")

    public static String zonedDateTimeToString(final ZonedDateTime dateToConvert, final DateTimeFormatter formatter) {
        return dateToConvert.format(formatter);
    }

    public static void main(String[] args) {
        ZonedDateTime effectiveDate = ZonedDateTime.now();
        System.out.println(zonedDateTimeToString(effectiveDate, PATTERN));
    }
}

内容的提问来源于stack exchange,提问作者monotor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:52:06