0

我真的不知道如何将我的日期格式设置为:2013-09-03T06:19:57.802Z 我正在访问一个需要我的日期采用这种格式的 API。因此,当格式错误时,我会收到内部服务器错误。到目前为止,我已经完成了以下工作。

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US);
Date date = new Date();
String dateToday = ISO8601DATEFORMAT.format(date);

我得到这个。2013-09-03T14:28:11+0800

有任何想法吗?谢谢!

4

2 回答 2

1

我认为您需要这样的格式

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
于 2013-09-03T06:45:23.837 回答
1

它在格式字符串Z中用作时区说明符,而不是作为文字Z字符。一种简单的方法是:

  • 将时区格式设置为 UTC
  • 逃脱Z

所以它看起来像这样:

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'",
                                                  Locale.US);
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = new Date();
String dateToday = isoFormat.format(date);

实际上,您不需要转义Z,就好像偏移量为 0 一样,Z无论如何都将使用 a 而不是 +00。重要的部分是在格式化程序中设置时区。是否要转义Z取决于您认为哪种方法最易读。

另一种选择是使用Joda Time,它通常是一个更简洁的日期/时间 API,并且内置了 ISO 格式:)

于 2013-09-03T06:40:52.793 回答