java - 使用冒号分隔符格式化 ISO 8601 日期

标签 java date iso8601

我正在尝试将以毫秒为单位的日期转换为以下 ISO 8601 格式:

enter image description here

但我使用 SimpleDateFormat 得到以下信息:

    /**
     * It converts the time from long to the ISO format
     * 
     * @param timestampMillis
     * @return isoDate
     */
    public String convertTimeMillisToISO8601(String timestampMillis)
    {
        long timeInLong= Long.parseLong(timestampMillis);
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        df.setTimeZone(TimeZone.getTimeZone("UTC"));
        String isoDate = df.format(new java.util.Date(timeInLong));
        return isoDate;
    }

输出:

"ts":"2015-06-18T09:56:21+0000"

我知道我可以使用 substring 来附加额外的冒号,但有更好的方法吗?

最佳答案

对于 Java 7 及更高版本,您可以在日期格式字符串中使用 XXX(ISO 8601 时区)。根据the documentation , X 的结果可以是:

X    => -08
XX   => -0800
XXX  => -08:00

但对于所有这些,它还不如返回 Z!

对于 Java 6 及更早版本,没有 X ( J6 doc ),并且由于 X 的结果可能会也可能不会如您所愿,我强烈建议建议您自己插入那个冒号。

关于java - 使用冒号分隔符格式化 ISO 8601 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29645020/

相关文章:

java - Java 8+ 中的 DateTimeFormatter.ISO_LOCAL_DATE 与 DateTimeFormatter.ofPattern ("yyyy-MM-dd")

java - 二进制运算符的错误操作数类型

javascript - 如何将 RFC 3339 中的日期转换为 javascript 日期对象(自 1970 年以来的毫秒数)

java - 我无法多次显示照片 Blob

javascript - 需要使用 Javascript Date Object 在 DST 转换上显示本地时间

Java Calendar.DAY_OF_WEEK 给出了错误的一天

python - Python 中的 ISO 时间 (ISO 8601)

c# - 如何在 .Net 中正式正确解析 ISO8601 日期时间?

java - 在 Android 中加载/保存属性文件最方便的方法是什么?

java - 将扫描仪对象传递给方法