Androidアプリ開発

String型協定世界時をlong型日時に変換する

この記事は約10分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


String型UTC協定世界時をlong型日時に変換する

ポイント

日時をデータ管理する場合、long型日時が何かと便利です。
long型日時は、基準日(1970年1月1日)からの経過(ミリ秒)をlong型で表現してます。
その一方で、日時をインタフェースで受け取る場合、String型日時であることが多い。
今回は、GPS受信機の標準インタフェースNMEAフォーマットのString型日時を、long型日時に変換する方法を紹介します。

NMEAセンテンスについて

NMEAフォーマットのString日時

NMEAフォーマットでは、時刻と日付を分けてインタフェースしています。
RMCセンテンスのhhmmss.ss形式で表されたUTC時刻と、ddmmyy形式で表された日付です。

NMEAデータの例

$GPRMC,071410.80,A,3444.6391,N,13530.8497,E,0.370000,0.000000,271223,,*37
$GPGGA,071410.80,3444.6391,N,13530.8497,E,1,00,0.0,-2.660000,M,0.0,M,,*44
$GPGLL,3444.6391,N,13530.8497,E,071410.80,A,*2F

071410.80がUTC時刻、271223が日付です。

String型日時をlong型日時に変換する

String型日時を扱う場合、SimpleDateFormatを使用します。
SimpleDateFormatで編集、getTimelong型日時に変換します。
ここで重要なことは、String型日時では時差を考慮する必要があることです。

    private long timeMillis(String datetime) {
        @SuppressLint("SimpleDateFormat")
        SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyhhmmss.SS");
        try {
            sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
            return Objects.requireNonNull(sdf.parse(datetime)).getTime();
        } catch (Exception e) {
            Log.d(TAG, Objects.requireNonNull(e.getMessage()));
            return 0;
        }
    }

SimpleDateFormatに対して、setTimeZoneで時差(タイムゾーン)を与えます。
日本標準時(JST)の場合は、Asia/Tokyoを設定します。

NMEAフォーマットのString日時をlong型日時に変換する

NMEAフォーマットでは、カンマ区切りで時刻は1番目、日付は9番目なので、結合してtimeMillisを呼び出します。

:
String[] data = nmea.split(",");
// $GPRMC (1)UTC時刻hhmmss.ss (9)UTC日付ddmmyy
long timeMillis = timeMillis(data[9] + data[1]);
:

SimpleDateFormatは、日付や時刻をフォーマットで自由に表現できるので、日付変換をシンプルに実装できます。

今回は、ここまでです。

String型UTC協定世界時をlong型日時に変換にしているAndroidアプリです。

WF-1000XM4の下取りキャンペーン中。買い替えするなら、今がチャンスです♪

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク