如何将UTC日期转换为Android上的区域GMT时间

我有这个日期字符串: 2016-04-26T09:14:10.477Z在UTC时区。 我想将它转换为用户本地时区,所以如果是格林尼治标准时间+02:00,我想要一个值为2016-04-26T11:14:10.477Z (注意到9的变化为11)。

我一直在使用这个:

 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这是不正确的,我想。

那么我怎样才能正确地转换它? 谢谢!

编辑:我的问题不同于这一个 ,因为我需要使用对象SimpleDateFormat而不是Date之一

4 Solutions collect form web for “如何将UTC日期转换为Android上的区域GMT时间”

尝试这个

 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; } 
  • 为什么这个班级考虑最终?
  • 如何使用基于ThreadLocal和Kotlin协程的代码
  • 在kotlin的片段
  • Kotlin Android应用程序编译失败,消息:未解决的参考:kotlinx
  • Kotlin泛型中“*”与“任意”的区别
  • 在Kotlin中从数组填充ListView
  • Kotlin镇压'条件总是如此'
  • 将视图绑定到更改的控制器属性
  • 如何在多项目中使用Spek来设置Jacoco?
  • Kotlin文档是否正确?
  • 如何使用Kotlin从Android中的IntentService发送通知
  • Kotlin language will be the best programming language for Android.