2014-03-05 225 views

回答

2

使用默認功能很容易實現。我希望本地數據僅用於顯示。

SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); 
parser.setTimeZone(TimeZone.getTimeZone("UTC")); 
Date parsed = parser.parse(utcDate); 

SimpleDateFormat formatter = new SimpleDateFormat("d-MMM-yyyy hh:mm a"); 
System.out.println(formatter.format(parsed)); 
+0

有用的答案! –

1

下面的代碼將幫助您將UTC轉換爲IST或任何其他時區。您需要注意您想使用SimpleDateFormat的時區。

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.TimeZone; 

public class ConvertTimeZone { 
    public static void main(String args[]) throws ParseException { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

     sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
     Date date = sdf.parse("2014-03-05 07:09:07"); 
     System.out.println("time in UTC " +sdf.format(date)); 
     sdf.setTimeZone(TimeZone.getTimeZone("IST")); 
     System.out.println("Time in IST is " + sdf.format(date)); 
    } 
} 
0

java.util.Date和.Calendar類出了名的麻煩。避免它們。請使用Joda-Time庫或與Java 8捆綁在一起的新java.time package

如果使用ISO 8601格式的字符串,則可以將字符串直接傳遞給Joda-Time DateTime構造函數。您的輸入字符串很接近,但中間的空格應該是T

使用Joda-Time 2.3庫的一些示例代碼。

String input = "2014-03-05 07:09:07.0"; 
String inputModified = input.replace(" ", "T"); 

DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris"); 
DateTime dateTimeUtc = new DateTime(inputModified, DateTimeZone.UTC); 

DateTime dateTimeParis = dateTimeUTC.toZone(timeZone); 
String outputFrance = DateTimeFormat.forPattern("FF").withLocale(Locale.FRANCE).print(dateTimeParis); 

DateTimeFormatter formatter = DateTimeFormat.forPattern("d-MMM-yyyy hh:mm a").withLocale(Locale.US); 
String outputParisCustom = formatter.print(dateTimeParis);