我已经针对ISO 8601使用Java格式的问题,我正在使用此代码
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
//yyyy-MM-dd'T'HH:mm:ss.shh:mm
Date date = Calendar.getInstance().getTime();
String cDate = format.format(date);
Log.d("Date","Date is " + cDate);
我的结果是:
Date is 2019-04-03T04:37:52+0000
如果我使用的是yyyy-MM-dd'T'HH:mm:ssZ
格式。结果是:
Date is 2019-04-03T04:49:33.3304:49
如果我使用的是yyyy-MM-dd'T'HH:mm:ss.shh:mm
格式。我已经尝试过解决方案,但是没有给我想要的解决方案。
我想要的解决方案是2008-09-15T15:53:00+05:00
。我尝试使用Offset,但不适用于API级别23,仅适用于API级别28。
答案 0 :(得分:1)
这是您应该使用的格式掩码:
yyyy-MM-dd'T'HH:mm:ssXXX
从SimpleDateFormat
的{{3}}中,我们可以看到X
代表ISO 8601时区,该时区以从格林尼治标准时间偏移的小时数表示。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
format.setTimeZone(TimeZone.getTimeZone("Africa/Cairo"));
Date date = Calendar.getInstance().getTime();
String cDate = format.format(date);
System.out.println("Date is " + cDate);
Date is 2019-04-03T06:41:30+02:00
请注意,我需要分配一个GMT
以外的时区,因为GMT
只会返回该时区的Z
。
答案 1 :(得分:1)
Tim是正确的,但是他给定的模式适用于Java,不适用于android中的java。 对于Android Java,请使用此模式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
然后将输出
Date is 2019-04-03T08:29:27+00:00