我需要获取格式的日期时间字符串
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
其中SSS是毫秒数(从000到999)。
我写了以下代码片段:
Date date=Calendar.getInstance().getTime();
String currentDateTimeString = (String) android.text.format.DateFormat.
format("yyyy-MM-dd'T'HH:mm:ss.SSSZ",Calendar.getInstance().getTime());
但是我得到类似的字符串
“ 2019-11-08T13:39:33.SSSZ”
由于此答案中所述的某些问题
https://stackoverflow.com/a/58768066/930835
所以我尝试了此代码
Date date=Calendar.getInstance().getTime();
String currentDateTimeString = (String) android.text.format.DateFormat.
format("yyyy-MM-dd'T'HH:mm:ss",date);
long ms=date.getTime() %1000;
currentDateTimeString=currentDateTimeString+"."+String.valueOf(ms)+"Z";
但是我不知道它是否可靠,也就是说,它是否正确计算出该Date瞬间的毫秒数。
从Java 8及更高版本开始,您可以使用ZonedDateTime
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String dateTime = ZonedDateTime.now(ZoneId.systemDefault()).format(formatter);
或OffsetDateTime
String offSetDateTime = OffsetDateTime.now(ZoneId.systemDefault()).format(formatter);