我真的不知道如何将我的日期格式化为: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
有什么想法吗?谢谢!
答案 0 :(得分:1)
它使用格式字符串Z
作为时区说明符,而不是文字Z
字符。一个简单的方法是:
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
而不是+00。重要的是在格式化程序中设置时区。是否要逃避Z
取决于您认为最易读的方法。
另一个替代方案是使用Joda Time,这是一个更清晰的日期/时间API,并且内置了ISO格式:)
答案 1 :(得分:1)
我认为你需要这样的格式
SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);