我正在尝试将以毫秒为单位的日期转换为以下 ISO 8601 格式:
但我使用 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/