Joda Time toDate()の間違った結果

Pavel Poley:

私はこのコードを使用しています:

date- DatePicker文字列としてのからの日付オブジェクトThu Sep 10 00:00:00 GMT+03:00 2020

mDate = DateTime(date)
           .withHourOfDay(0)
           .withMinuteOfHour(0)
           .withSecondOfMinute(0)
           .withMillisOfSecond(0)
           .toDate()

結果mDate-Wed Sep 09 03:00:00 GMT+03:00 2020

これはどうしたの?

Arvind Kumar Avinash:

DateTimeオブジェクトをjava.util.Date正しく変換していません。正しい方法は、DateTimeオブジェクトからミリ秒を取得し、ミリ秒でを初期化することjava.util.Dateです。

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // Define formatter
        DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zZ yyyy");

        // Date-time string from DatePicker
        String strDateTime = "Thu Sep 10 00:00:00 GMT+03:00 2020";

        DateTime dateTime = DateTime.parse(strDateTime, formatter);
        System.out.println(dateTime);

        // No. of milliseconds from the epoch of 1970-01-01T00:00:00Z 
        long millis = dateTime.getMillis();
        System.out.println(millis);

        Date mDate = new Date(millis);
        // Display java.util.Date object in my default time-zone (BST)
        System.out.println(mDate);

        //Display java.util.Date in a different time-zone and using custom format
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT+3"));
        System.out.println(sdf.format(mDate));
    }
}

出力:

2020-09-09T21:00:00.000Z
1599685200000
Wed Sep 09 22:00:00 BST 2020
Thu Sep 10 00:00:00 GMT+03:00 2020

注: java.util.Dateは日付/時刻オブジェクトを表しません。それは単にノーを表します。のエポックからミリ秒単位1970-01-01T00:00:00Zタイムゾーンまたはゾーンオフセット情報はありません。印刷すると、JavaはJVMのタイムゾーンを適用して得られた文字列を印刷します。他のタイムゾーンで印刷する場合はSimpleDateFormat、上記のようにを使用して印刷できます

古くてエラーが発生しやすいjava.util日時API SimpleDateFormatから、最新の java.time日時APIおよび対応するフォーマットAPI(パッケージ、java.time.format)に切り替えることをお勧めしますTrail:Date Timeの最新の日時APIについて詳しく学んでくださいそれでもAndroid APIレベルがJava8に準拠していない場合は、「Android プロジェクトでThreeTenABPを使用する方法」および「desugaringを通じて利用可能なJava 8+ API 」を確認してください

次の表は、最新の日時クラスの概要を示していますここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Joda Timeの追加

分類Dev

Joda Timeが間違ったタイムゾーンを与える

分類Dev

Joda Time PlusDaysの日付が間違っている

分類Dev

Joda-Timeでの概算期間

分類Dev

Joda Time PeriodFormatterBuilder

分類Dev

Joda Time IllegalArgumentException

分類Dev

Java 8 Date Time API(java.time)とJoda-Timeの違い

分類Dev

Joda-Time:DateTime、DateMidnight、LocalDateの使用

分類Dev

Java CalendarからJoda Date Timeへの移行

分類Dev

Joda-Timeパーシャルの解析

分類Dev

joda-time ISODateTimeFormat.dateTime()の誤動作

分類Dev

Joda Time DateTime#centuryOfEra()との混同

分類Dev

継続時間または間隔のJoda Time分

分類Dev

Joda-Timeを使用した期間の計算

分類Dev

Limit date range in Joda Time

分類Dev

Limit date range in Joda Time

分類Dev

Joda Time to Java Time Migrationは移行中に異なる結果を示します

分類Dev

java joda-time get date time

分類Dev

Convert date using joda time and ignore time

分類Dev

java.util.Date APIとJoda Time APIの違い

分類Dev

Joda-Timeの2つの日付間の日数

分類Dev

Joda-Time、夏時間の変更および日時の解析

分類Dev

Java Joda Timeで「isBefore」を使用した日付のみの比較

分類Dev

joda timeを使用した残りの年、月、日(Android)

分類Dev

Joda Timeを使用してDateTimeまでマイナス1時間

分類Dev

Joda Time Libraryを使用した日付フォーマット

分類Dev

Joda-TimeのDateMidnightの推奨される使用法

分類Dev

2つのJoda-Time DateTimeオブジェクトの比較

分類Dev

4桁の年のみ(Joda Timeを使用)を解析する方法は?

Related 関連記事

ホットタグ

アーカイブ