2011-08-09 3 views
0

C#で

DateTime dateTime = DateTime.Parse(text, CultureInfo.InvariantCulture); 
string s = dateTime.ToLocalTime().ToString("s", CultureInfo.InvariantCulture)); 

text2011-06-30T05:48:34Zあり、そしてs2011-6-30 13:48:34

Javaで

です:

DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
// explicitly set timezone of input if needed 
df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 
java.util.Date dateTime ; 
dateTime = df.parse(text); 
String s= df.format(dateTime)); 

けどs2011-6-30 05:48:34です。どのようにJavaでToLocalTime()関数を実装するには?

答えて

1

あなたのコードdf.parse(テキスト)を持つべきであるオブジェクト

java.util.Date dateTime ; 
df.setTimeZone(TimeZone.getTimeZone("UTC")); 
datetime = df.parse(text); 

//Now set this to the required local timezone 
df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 

String s= df.format(dateTime)); 

にそれを得ます文字列はタイムゾーンを使用します。そして、同じタイムゾーンで日付をフォーマットします。したがって、あなたは同じ結果を得ています。明らかにそれはうまくいくはずです。 Unfortunately simpleDateFormat is not compatible with ISO8601。よりパワフルでよく設計されたjoda時間ライブラリを使用できます。または、入力文字列が常にGMTでZで終わっていることを常に確認している場合は、明示的なコードを使用できます。

DateFormat dfParse = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
dfParse.setTimeZone(TimeZone.getTimeZone("UTC")); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 
java.util.Date dateTime ; 
dateTime = dfParse.parse(text); 
String s= df.format(dateTime); 
1

まずUTCのように日付を設定してから、日付を解析し、今文字列が正しい日付に

-1
try{ 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"); 

      Date datetime = new Date(); 

     System.out.println("date "+sdf.format(datetime)); 

     sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); 

     System.out.println("asia/shanghai "+ sdf.format(datetime)); 

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

     System.out.println("utc "+sdf.format(datetime)); 
    }catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

カレンダーは、日付操作(たとえば、日付を2日追加)のみです。さらに、あなたのコードでは、カレンダーはトピックスターターの問題には使用されません。 – kan

+0

見た目は良くなりましたが、UTCは必要ですが、解析メソッドが暗黙的にシステムのデフォルトタイムゾーンを使用しているのは嫌です。 – kan