2016-01-28 2 views
0

Я пытаюсь преобразовать этот формат времени даты, который был создан на локальном времени на устройстве Android для GMT. Я не могу получить правильное значение. Также генерируется dateTime для локального времени на android. Как я могу преобразовать его в точный GMT unixtime?конвертировать пользовательские локали даты времени в gmt в android

  String dateTime="02-02-2016 8:28 PM"; 
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a"); 
      format.setTimeZone(TimeZone.getTimeZone("GMT")); 
      Date date = null; 
      try { 
       date = format.parse(dateTime); 
       System.out.println("Date ->" + date); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      long unixtime = date.getTime()/1000; 

ответ

1
try{ 
        SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        sourceFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
        Log.v("Current time", ""+ sourceFormat.format(new Date())); 

        Date parsed = sourceFormat.parse(sourceFormat.format(new Date())); // => Date is in UTC now 


        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 
        SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        destFormat.setTimeZone(tz); 

//     String result = destFormat.format(parsed); 
        String result = destFormat.format(sourceFormat.parse(sourceFormat.format(new Date()))); 

        Log.e("result", ""+result); 


//     2015-11-26 02:07:59     
        SimpleDateFormat UTCFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        SimpleDateFormat severFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        SimpleDateFormat localFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

        UTCFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

        TimeZone tz1 = TimeZone.getTimeZone("America/Los_Angeles"); 
        severFormat.setTimeZone(tz1); 

        localFormat.setTimeZone(TimeZone.getDefault()); 

        Date serverDate = severFormat.parse(result); 
        Date utcDate = UTCFormat.parse(UTCFormat.format(serverDate)); 

        String localDate = localFormat.format(utcDate); 
        Log.e("localDate", ""+localDate); 
       }catch(ParseException e){ 
        e.printStackTrace(); 
       } catch (java.text.ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
+0

Пожалуйста преобразовать строку я создал. Я не беру текущую дату и время, и каждое устройство будет иметь свой часовой пояс. – jason

+0

Думаю, вы можете это сделать. Если есть какие-то проблемы, спросите меня. – Pavya

+0

Выше решение имеет преобразование в конкретный часовой пояс и конкретный часовой пояс в локальную дату – Pavya

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