0

こんにちは、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 に本当に慣れていないので、なぜこれが起こっているのか、それを回避する方法がわかりません。修正を手伝ってくれる人はいますか? 私はこの問題に何時間も行き詰まりました。

前もって感謝します。

4

1 に答える 1