どのようにJavaでのDateTimeとUnixの時間を使用するには?

WaitoPiggu :

私は、JavaでのAndroid StudioでAndroid向けアプリを作ってるんです。私は、日付と時刻で働いています。私は時間内にカスタム与えられた点からUnixタイムスタンプを生成しようとしています。コードの例として、以下のピース

LocalDateTime aDateTime = LocalDateTime.of(2021, 4, 30, 8, 30);
ZoneId zoneId = ZoneId.systemDefault();
int x = Math.toIntExact(aDateTime.atZone(zoneId).toEpochSecond());

私は、これはすべてのオンラインコンバータに入るとき、それは時間を生成し、しかし、Unixタイムスタンプ1619760600.を作り出します04/30/2021 @ 5:30am (UTC)これがでオフになって3 hoursいる私のタイムゾーンが異なるから、時間に正確な量をあるオリジナルの挿入時からUTC00:00

問題は、Javaのタイムゾーンを理解するために私のできないことのようです。私の質問があるので、どのように正しくので、正しいUnixTimeStampが生成される時間帯にI因子のですか?

ジョニ:

あなたはすでに、右のタイムスタンプを持っています。

タイムスタンプは、時間の瞬間を表します。タイムゾーンは、ユーザーのローカル時間でタイムスタンプを表示したい場合にのみ、問題では。あなたのケースでは、午前5:30(UTC)@ 2021年4月30日には、あなたの現地時間で午前8時30分のように時間の同じ瞬間です。あなたが見つかったオンラインツールがUTCに加えて、ローカル時間でタイムスタンプを表示することができます参照してください。

あなたはかかわらず、タイムスタンプのためにint型の使用を停止し、代わりに長く使用する必要がありますhttps://en.m.wikipedia.org/wiki/Year_2038_problem

あなたの代わりに8時30分現地時間の午前8時30分UTCのタイムスタンプを作成すると予想した場合、ゾーン化日時を作成するときに、ちょうどUTCタイムゾーンを使用します。

LocalDateTime aDateTime = LocalDateTime.of(2021, 4, 30, 8, 30);
ZoneId zoneId = ZoneOffset.UTC;
long x = aDateTime.atZone(zoneId).toEpochSecond();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18096&siteId=1