こんにちは、UTC 日時文字列の値を取得し、それをローカル表示にフォーマットして返す以下のメソッドがあります。
public static String convertDateStringUTCToLocal(String sourceUtcDateTimeString)
{
SimpleDateFormat simpleDataFormat = new SimpleDateFormat();
simpleDataFormat.setTimeZone(getCurrentTimeZone());
String outputUTCDateTimeString = simpleDataFormat.parse(sourceUtcDateTimeString, new ParsePosition(0)).toString();
return outputUTCDateTimeString;
}
public static TimeZone getCurrentTimeZone()
{
Calendar calendar = Calendar.getInstance();
TimeZone outputTimeZone = calendar.getTimeZone();
return outputTimeZone;
}
ユーザーはいつでもローカル設定を変更する可能性があり、フォーマットをハードコーディングしたくないため、 getCurrentTimeZone() を使用します。
デバッグ中、パラメータ sourceUtcDateTimeString の値は「Mon Apr 15 13:54:00 GMT 2013」で、「simpleDataFormat.parse(sourceUtcDateTimeString, new ParsePosition(0))」で「null」と「simpleDataFormat.parse」が返されることがわかりました(sourceUtcDateTimeString, new ParsePosition(0)).toString()' は、エラー「java.lang.NullPointerException at toString()」をスローします。
ParsePosition(0) には何もないように見えますが、私は Android dev に本当に慣れていないので、なぜこれが起こっているのか、それを回避する方法がわかりません。修正を手伝ってくれる人はいますか? 私はこの問題に何時間も行き詰まりました。
前もって感謝します。