简体   繁体   中英

how to convert GMT to Local date time in android

I have a time like this : Thu, 27 Oct 2016 18:17:47 GMT

I have tried the code bellow but didn't work

    String inputText = "Thu, 27 Oct 2016 18:17:47 GMT";
    SimpleDateFormat inputFormat = new SimpleDateFormat
        ("EEE MMM dd HH:mm:ss 'GMT' yyyy", Locale.US);
    inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));

    SimpleDateFormat outputFormat =
        new SimpleDateFormat("MMM dd, yyyy h:mm a");
    // Adjust locale and zone appropriately
    Date date = inputFormat.parse(inputText);
    String outputText = outputFormat.format(date);
    System.out.println(outputText);

Your input date and input format don't match each other. Try this input format instead:

SimpleDateFormat inputFormat = new SimpleDateFormat
    ("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);

Here are a couple of functions that will do it:

public static Date toLocale(Date date) {
    int GMTOffset = (int) TimeUnit.HOURS.convert(calendar.getTimeZone().getRawOffset(),
            TimeUnit.MILLISECONDS);
    return addHours(date, GMTOffset);
}


public static Date addHours(Date date, int hours) {
    calendar.setTime(date);
    calendar.add(Calendar.HOUR_OF_DAY, hours);
    return calendar.getTime();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM