ホームページ >Java >&#&チュートリアル >Android で日付を解析するときに java.text.ParseException を修正する方法?

Android で日付を解析するときに java.text.ParseException を修正する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-19 10:18:15989ブラウズ

How to Fix java.text.ParseException When Parsing Dates in Android?

日付解析エラー: SimpleDateFormat での java.text.ParseException

問題ステートメント

Android で SimpleDateFormat を使用して日付文字列を解析すると、次のエラーが発生します発生:

java.text.ParseException: Unparseable date: "24 Oct 2016 7:31 pm" (at offset 3)

解決策: SimpleDateFormat でロケールを指定し、カスタム形式に DateTimeFormatter を使用する

エラーを解決するには、SimpleDateFormat を使用するときにロケールを明示的に指定することが重要です。これにより、日付形式がロケールの規則に基づいて正しく解釈されるようになります。

さらに、最新の Java 8 日付と時刻 API に切り替えることを強くお勧めします。これにより、機能が向上し、古い日付と時刻の潜在的な問題が排除されます。 SimpleDateFormat のような API。

カスタム日付形式の場合は、SimpleDateFormat の代わりに DateTimeFormatter を使用する必要があります。大文字と小文字を区別しない解析を提供し、複数のロケールをサポートし、全体的により柔軟です。

コード例

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {

    public static void main(String[] args) {
        String strDateTime = "24 Oct 2016 7:31 pm";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d MMM uuuu h:m a", Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt);
    }
}

デフォルト ロケールの落とし穴

デフォルト ロケールは解析時に問題が発生する可能性があります。日付はシステムのロケール設定によって異なるためです。これらの問題を回避するには、常に目的のロケールを明示的に指定してください。

追加メモ

  • Java 8 API の推奨: Java 8 の日付と時刻 API は、さらに詳細です。効率的かつ柔軟で、複数のタイムゾーンのサポートが組み込まれています。機能とメンテナンスを向上させるために、この API に移行することを強くお勧めします。
  • Java 6 および 7 用の ThreeTen-Backport: Java 8 にアップグレードできない場合は、ThreeTen-Backport の使用を検討してください。 Java 8 の日付と時刻の機能を Java 6 および 7 にバックポートします。

以上がAndroid で日付を解析するときに java.text.ParseException を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。