2016-05-09 23 views
1

UTC形式で指定された日付をCET形式の日付に変換したいと思います。UTCからCETへの日付の変換

問題は、それに応じて時間を加算または減算する必要があることです。

例:

Date = "2015-07-31 01:14:05" 

私はドイツの日付(2時間を追加すること)に変換したいと思います:

2015-07-31 03:14:05" 

マイコード:

private static Long convertDateFromUtcToCet(String publicationDate) { 
    //"2015-07-31 01:14:05" 

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); 
    //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd"); 
    Date date = null; 
    try { 
     date = simpleDateFormat.parse(publicationDate); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
    calendar.setTime(date); 
    Date givenDate = calendar.getTime(); 
    System.out.println("Original UTC date is: " + givenDate.toString()); 

    TimeZone timeZone = TimeZone.getTimeZone("CET"); 
    calendar.setTimeZone(timeZone); 
    Date currentDate = calendar.getTime(); 
    System.out.println("CET date is: " + currentDate.toString()); 

    long milliseconds = calendar.getTimeInMillis(); 

    return milliseconds; 
} 

この版画:

Original UTC date is: Sat Jan 31 01:14:05 IST 2015 
CET date is: Sat Jan 31 01:14:05 IST 2015 
+0

あなたはUTCとして日付を解析していない、それはおそらく問題 –

+1

うあなたが密接に見ると、出力から何が間違っているかを見ることができます:解析可能なタイムゾーン情報がない場合、入力文字列 'SimpleDateFormat'の情報はあなたのタイムゾーンになります。この場合、' IST' Irelanでdまたはインドでは、3文字の時間帯の略語の使用に関する警告として機能する必要があります)。 – biziclop

+0

Java8を使用している場合は、新しいデータ/カレンダーの構文をチェックしてください。新しいAPIははるかに理解しやすく使いやすいです。 –

答えて

2

まず、あなたのパターン文字列は間違っています。それはyyyy-MM-ddであり、yyyy-mm-ddではありません。

simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
1

は、使用してみてください::でそれを設定し、与えられた時間帯に解析するために

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

long ts = System.currentTimeMillis(); 
Date localTime = new Date(ts); 
String format = "yyyy-mm-dd hh:mm:ss"; 
SimpleDateFormat sdf = new SimpleDateFormat(format); 

// Convert Local Time to UTC (Works Fine) 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
Date gmtTime = new Date(sdf.format(localTime)); 
System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" 
     + gmtTime.toString() + "," + gmtTime.getTime()); 


// Convert UTC to Local Time 
Date fromGmt = new Date(gmtTime.getTime() + TimeZone.getDefault().getOffset(localTime.getTime())); 
System.out.println("UTC time:" + gmtTime.toString() + "," + gmtTime.getTime() + " --> Local:" 
     + fromGmt.toString() + "-" + fromGmt.getTime()); 
関連する問題