如何将UTC日期转换为地区GMT时间android
问题描述:
我有这个日期字符串:2016-04-26T09:14:10.477Z
这是UTC时区。我想将其转换为用户本地时区,所以如果是格林威治标准时间+02:00,我需要一个值为2016-04-26T11:14:10.477Z
的日期(请注意9个更改为11)。如何将UTC日期转换为地区GMT时间android
我一直在使用这个至今:
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.getDefault())
val now = Date()
val limit = sdf.parse(coupon.usedAt)
这里limit = Tue Apr 26 09:14:10 GMT+02:00 2016
这是不正确的,我想。
那么我怎样才能正确地转换它?谢谢!
编辑:我的问题不同于this one,因为我需要使用对象SimpleDateFormat
而不是Date
一个
答
试试这个
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date myDate = simpleDateFormat.parse(rawQuestion.getString("AskDateTime"));
答
试试这个。
String dateString = "04/26/2016 10:22:00 AM";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(dateString);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(convertedDate);
Date time = calendar.getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
String utcTime = outputFmt.format(time);
答
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date date = sdf.parse("2016-04-26T09:14:10.477Z");
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
System.out.println(sdf.format(date));
答
试试这个,替换格式
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public static String getFormattedLocalTimeFromUtc (String utcTimeStamp, String outputFormat) {
String formattedTime = null;
if (!TextUtils.isEmpty (utcTimeStamp)) {
if (utcTimeStamp.contains ("T")) {
String localTime = null;
SimpleDateFormat sdf = new SimpleDateFormat (DATE_FORMAT, Locale.getDefault());
sdf.setTimeZone (TimeZone.getTimeZone ("UTC"));
try {
localTime = sdf.parse (utcTimeStamp).toString();
}
catch (ParseException e) {
e.printStackTrace();
}
DateFormat inputDateFormat = new SimpleDateFormat ("EEE MMM dd HH:mm:ss z yyyy");
inputDateFormat.setTimeZone (TimeZone.getTimeZone ("UTC"));
Date date = null;
try {
date = inputDateFormat.parse (localTime);
}
catch (ParseException e) {
e.printStackTrace();
}
DateFormat outputDateFormat = new SimpleDateFormat (outputFormat);
formattedTime = outputDateFormat.format (date);
}
}
return formattedTime;
}
您可以通过时间戳的1000转换UTC devide于北京时间 – Naitik
可能的复制[如何我使用Java或GMT获取当前日期和时间?](http://stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in-utc-或-GMT-在-JA va) –
使用此代码尝试。 [点击这里查看日期和时间的所有格式](https://stackoverflow.com/questions/5369682/get-current-time-and-date-on-android/34328449#34328449) – Amitsharma