Java 获取格式为2013-09-03T06:19:57.802Z的当前日期

Java 获取格式为2013-09-03T06:19:57.802Z的当前日期,java,android,date,format,date-format,Java,Android,Date,Format,Date Format,我真的不知道如何将我的日期格式转换成这种格式: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 =

我真的不知道如何将我的日期格式转换成这种格式: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


有什么想法吗?谢谢

它在格式字符串
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
而不是+00。重要的部分是在格式化程序中设置时区。您是否要转义
Z
取决于您认为最具可读性的方法


另一种选择是使用更干净的日期/时间API,并且内置ISO格式:)

我想您需要这样的格式

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);