2016-04-26 579 views
2

我有这个日期字符串: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一个

+0

您可以通过时间戳的1000转换UTC devide于北京时间 – Naitik

+0

可能的复制[如何我使用Java或GMT获取当前日期和时间?](http://stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in-utc-或-GMT-在-JA va) –

+0

使用此代码尝试。 [点击这里查看日期和时间的所有格式](https://stackoverflow.com/questions/5369682/get-current-time-and-date-on-android/34328449#34328449) – Amitsharma

回答

3

试试这个

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
Date myDate = simpleDateFormat.parse(rawQuestion.getString("AskDateTime")); 
0

试试这个。

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); 
0
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)); 
0

试试这个,替换格式

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; 
} 
相关问题