2016-02-01 45 views
5

Sto lavorando alla conversione della data in java in quanto sto utilizzando il seguente snippet di codice per convertire l'ora UTC in formato IST. Funziona correttamente in il locale quando lo eseguo ma quando lo distribuisco nel server non si converte, visualizza solo il tempo utc stesso. C'è qualche configuaration necessario sul lato server. Per favore aiutatemi.La conversione di UTC in ora IST in java funziona in LOCAL ma non in CLOUD SERVER

frammento di codice:

DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String pattern = "dd-MM-yyyy HH:mm:ss"; 
    SimpleDateFormat formatter; 
    formatter = new SimpleDateFormat(pattern); 

    try { 
     String formattedDate = formatter.format(utcDate); 
     Date ISTDate = sdf.parse(formattedDate); 
String ISTDateString = formatter.format(ISTDate); 
      return ISTDateString; 
} 
+2

Cosa intendi esattamente per "IST" (tempo standard indiano, ora standard irlandese, ora standard israeliana?); e qual è il fuso orario predefinito della JVM sul server? –

+0

Qual è il tipo di 'utcDate'? Presumo che sia un 'java.util.Date'. –

+0

Il tuo codice non converte mai in realtà in IST, hai letteralmente impostato sdf su "UTC", e quindi hai solo analizzato la data formattata. – Paddez

risposta

2

Java Date oggetti sono già/sempre in UTC. Il fuso orario è qualcosa che viene applicato durante la formattazione del testo. Un Date non può (non dovrebbe!) Essere in un qualsiasi fuso orario diverso da UTC.

Quindi, l'intero concetto di conversione da utcDate a ISTDate è difettoso.
(BTW:. Convenzioni Java Bad nome dice che dovrebbe essere istDate)

Ora, se si desidera che il codice per tornare la data come testo in TSI fuso orario, allora avete bisogno di chiedere che:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // Or whatever IST is supposed to be 
return formatter.format(utcDate);