你好,我通过简单的日期格式方法转换日期,但它返回错误的输出时间,就像我需要这个
输入:2016-06-28T08:19:05.721Z
输出应为:13:49:05
但它回归:08:19:05
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date newDate = null;
try {
newDate = format.parse("2016-06-28T08:19:05.721Z");
} catch (ParseException e) {
e.printStackTrace();
}
format = new SimpleDateFormat("hh:mm a");
String date = format.format(newDate);
答案 0 :(得分:0)
使用SimpleDateFormat
课程中的此构造函数:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html#SimpleDateFormat(java.lang.String,%20java.util.Locale)
答案 1 :(得分:0)
将区域设置与模式一起传递给SimpleDateFormat。
SimpleDateFormat sd = new SimpleDateFormat("EEEE dd MMM yyyy", Locale.ENGLISH);
答案 2 :(得分:0)
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date newDate = null;
try {
newDate = format.parse("2016-06-28T08:19:05.721Z");
} catch (ParseException e) {
e.printStackTrace();
}
format = new SimpleDateFormat("HH:mm a");
String date = format.format(newDate);
答案 3 :(得分:0)
更改解析模式
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
到
"yyyy-MM-dd'T'HH:mm:ss.SSSX"
以便实际考虑输入时区(而不只是期望文字Z
)。
对于格式化,使用默认时区,假设它是UTC + 05:30,您将获得所需的输出。
答案 4 :(得分:0)
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date newDate = null;
try {
newDate = format.parse("2016-06-28T08:19:05.721Z");
} catch (ParseException e) {
e.printStackTrace();
}
format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = format.format(newDate);
format .setTimeZone(TimeZone.getTimeZone("UTC"));
Date parsed = null; // => Date is in UTC now
try {
parsed = format .parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
TimeZone tz = TimeZone.getTimeZone("Asia/Kolkata");
SimpleDateFormat destFormat = new SimpleDateFormat("HH:mm:ss");
destFormat.setTimeZone(tz);
date = destFormat.format(parsed);
Log.e("date",date);
我通过这样做解决了...谢谢所有:)