2016-02-29 3 views
1

Я нашел много функций для преобразования из utc в локальное время, но я не нашел, как конвертировать из локального в utc?Как исправить ошибки с local time to utc?

Это используется с utc для локальных, как редактировать, чтобы получить utc из локального?

 public static String timezoneAwareDate(String date){ 
    // create simpledateformat for UTC dates in database 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

    Date output; 
    // parse time 
    try{ 
     output = simpleDateFormat.parse(date); 
    }catch (Exception e){ 
     // return current time 
     output = new Date(); 
    } 

    return output.toString(); 
} 
+0

Похоже, что на самом деле вы получаете время UTC. Уведомление '.setTimeZone (TimeZone.getTimeZone (« UTC »)' –

+4

http://stackoverflow.com/questions/17677546/utc-time-into-local-time-in-android –

+0

нет, местное время сейчас 16:20 и вот UTC + 2, поэтому время utc должно быть 14:20, но я нашел его 18:20 @TimCastelijns –

ответ

0

Добавить этот класс в свой проект и локально использовать его методы для utc или utc.

import java.util.TimeZone; 

public final class Utility { 
public static final TimeZone utcTZ = TimeZone.getTimeZone("UTC"); 

public static long toLocalTime(long time, TimeZone to) { 
    return convertTime(time, utcTZ, to); 
} 

public static long toUTC(long time, TimeZone from) { 
    return convertTime(time, from, utcTZ); 
} 

public static long convertTime(long time, TimeZone from, TimeZone to) { 
    return time + getTimeZoneOffset(time, from, to); 
} 

private static long getTimeZoneOffset(long time, TimeZone from, TimeZone to) { 
    int fromOffset = from.getOffset(time); 
    int toOffset = to.getOffset(time); 
    int diff = 0; 

    if (fromOffset >= 0){ 
     if (toOffset > 0){ 
      toOffset = -1*toOffset; 
     } else { 
      toOffset = Math.abs(toOffset); 
     } 
     diff = (fromOffset+toOffset)*-1; 
    } else { 
     if (toOffset <= 0){ 
      toOffset = -1*Math.abs(toOffset); 
     } 
     diff = (Math.abs(fromOffset)+toOffset); 
    } 
    return diff; 
    } 
} 

Если вы хотите узнать об этом подробнее. Об этом уже ответили link

+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-whole-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода – Ferrybig

+0

Функциональность в стороне, 'Утилита' - это действительно неопределенное имя для класса –

+0

@TimCastelijns, что вы правы, но этот класс может расширить метод, чтобы решить больше. У вас есть какое-то предложение как имя для этого класса :) – slymnozdmrc

2
public static java.util.Date getConvertedDate(java.util.Date date,String newTimeZone) { 

    if(date != null) { 
     SimpleDateFormat df = new SimpleDateFormat("dd/MM/yy hh:mm a"); 
     df.setTimeZone(TimeZone.getTimeZone(newTimeZone)); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 

     String newdt = df.format(calendar.getTime()); 
     try { 
      date = df.parse(newdt); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
    return date; 
} 
+2

Welcom e для переполнения стека! Хотя этот фрагмент кода может решить этот вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – Ferrybig

Смежные вопросы