別のタイムゾーンの特定の時間にジョブを実行する方法

RohitT:

私がBST、つまりブリティッシュサマータイムにいて、米国/東部のタイムゾーンに従って19.30にジョブを実行したい場合、どうすればそれを達成できますか。

私が試したサンプルコード、

Instant now = Instant.now();
LocalDateTime localTimeNow = LocalDateTime.ofInstant(now, ZoneOffset.systemDefault());
//if BST then use "Europe/London" 
//if US/Eastern then use "America/New_York" 
// For EST also use "America/New_York"
// If GB-Eire then use "Europe/London"
ZonedDateTime bsTime = now.atZone(ZoneId.of("Europe/London"));

ZonedDateTime nyAmerica = now.atZone(ZoneId.of("America/New_York"));

// Lets calculate the difference between 2 timezones
// Between London and EST
long timeDiff = ChronoUnit.MILLIS.between(bsTime, nyAmerica);
System.out.println("timeDiff - " + timeDiff);

int minutes = (int) ((timeDiff / 1000) / 60);

System.out.println("Time diff bet London and EST - " + minutes + " minutes");

long diff = Duration.between(bsTime, nyAmerica).getSeconds();
int mins = (int) (diff / 60);
System.out.println("Time diff bet London and EST - " + mins + " minutes");

どちらの場合もゼロになります。

私が欲しいのは、この遅延を使用して、それを以下のようにexecutorサービスに渡す必要があることです。

executor.schedule(myRunnable, delay, TimeUnit.SECONDS);

したがって、私が英国にいる場合でも、ジョブはUS / Easternに従って19.30に実行される必要があります。

また、EST、BSTなどの一部の略語は有効なZoneIdではありません。では、ESTやBSTなどの省略形式のタイムゾーンがある場合、どうすればそれらのケースを処理できますか?

アンドレアス:

更新:以下の元の答えは、異なる時間帯の特定の時刻に実行する必要があるジョブを開始するための現地時間を計算する方法を示しています。

その時間まで待機する時間を計算するだけの場合は、ローカルタイムゾーンを使用しなくても、はるかに簡単に計算できます。

LocalTime jobStartTime = LocalTime.of(19, 30);
ZoneId jobZone = ZoneId.of("America/New_York");

ZonedDateTime now = ZonedDateTime.now(jobZone);
ZonedDateTime jobDateTime = now.with(jobStartTime);
if (jobDateTime.isBefore(now))
    jobDateTime.plusDays(1);
long delay = ChronoUnit.MILLIS.between(now, jobDateTime);

System.out.println("now         = " + now);
System.out.println("jobDateTime = " + jobDateTime);
System.out.println("delay       = " + delay + "  =  " + Duration.ofMillis(delay));

出力

now         = 2020-07-17T08:18:45.482028800-04:00[America/New_York]
jobDateTime = 2020-07-17T19:30-04:00[America/New_York]
delay       = 40274517  =  PT11H11M14.517S

元の回答

now2020-07-17 07:57:45 Z
ロンドンにあり、は2020-07-17 08:57:45 +01:00
ニューヨークにあり2020-07-17 03:57:45 -04:00ます。

ロンドンとニューヨークの時差は?彼らは同じ時間なので、
0秒

質問のコードは、時間が19:30になる時期を計算しません。代わりに、それは計算にのようにタイムゾーンの違いを試み、今が、夏時間のため、午後7時半の時間帯の違いがあるかもしれない異なったアプローチが間違っているので、。

ロンドンにいて、ニューヨークで次の19:30になる時期を知る必要がある場合は、次のようにします。

Instant now = Instant.now();
ZoneId localZone = ZoneId.of("Europe/London");
ZoneId remoteZone = ZoneId.of("America/New_York");
System.out.println("now             = " + now);

ZonedDateTime remoteNow = now.atZone(remoteZone);
LocalDate remoteDate = remoteNow.toLocalDate();
LocalTime remoteTime = LocalTime.of(19, 30);
if (remoteNow.toLocalTime().isAfter(remoteTime))
    remoteDate = remoteDate.plusDays(1);
ZonedDateTime remoteStartTime = ZonedDateTime.of(remoteDate, remoteTime, remoteZone);
System.out.println("remoteNow       = " + remoteNow);
System.out.println("remoteStartTime = " + remoteStartTime);

ZonedDateTime localStartTime = remoteStartTime.withZoneSameInstant(localZone);
System.out.println("localNow        = " + now.atZone(localZone));
System.out.println("localStartTime  = " + localStartTime);

出力

now             = 2020-07-17T07:57:45.206007800Z
remoteNow       = 2020-07-17T03:57:45.206007800-04:00[America/New_York]
remoteStartTime = 2020-07-17T19:30-04:00[America/New_York]
localNow        = 2020-07-17T08:57:45.206007800+01:00[Europe/London]
localStartTime  = 2020-07-18T00:30+01:00[Europe/London]

したがって、イギリスのタイムゾーンを実行しているコンピューターでは、次の米国東部標準時の午後7時30分は今夜の午前0時半です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別のタイムゾーンでOracleQueryを実行する方法

分類Dev

すべてのタイムゾーンの特定の時間に実行するSidekiq

分類Dev

ユーザーのローカルタイムゾーンに基づいて、特定の時間に毎日のアクションを実行します

分類Dev

Java Springは特定のタイムゾーンの特定の時間にスケジュールされたタスクを実行します

分類Dev

別のタイムゾーンで同等の時間を取得する方法

分類Dev

MomentJS:特定のタイムゾーンと特定の形式の時間をミリ秒に変換する方法

分類Dev

時刻を瞬間タイムゾーンの特定のタイムゾーンに変換する

分類Dev

カスタムの長時間実行タイマージョブの進行状況を設定する方法

分類Dev

Joda時間を使用して、特定のタイムゾーンの現在の実時間を取得する

分類Dev

特定の時間の間に Quarz Cron ジョブを実行する方法は?

分類Dev

(Android)時間の生の文字列(タイムゾーン付き)を同じタイムゾーンの別の文字列形式に変換する方法

分類Dev

JavaScriptで異なるタイムゾーンの特定の時間の現地時間を取得する方法

分類Dev

JavaScriptで異なるタイムゾーンの特定の時間の現地時間を取得する方法

分類Dev

Powershell-現地時間を別のタイムゾーンに変換する

分類Dev

同じ時間を別のタイムゾーンに変換する

分類Dev

UTCを特定のタイムゾーン時間に変換するJavascript

分類Dev

CRONジョブを毎日特定の時間に実行する

分類Dev

特定の時間に遅延ジョブを実行する

分類Dev

Androidで別のタイムゾーンに関して時間を取得する方法

分類Dev

NestJs特定の時間に1日3回cronジョブを実行する方法

分類Dev

別のタイムゾーンとの時間差を計算する

分類Dev

CESTタイムゾーンとUTCタイムゾーンの間で日時オブジェクトを変換する方法

分類Dev

UTC時間をブラウザのローカルタイムゾーンに変換する方法は?

分類Dev

特定のタイムゾーンのFortranコードから現在の「標準時間」を取得する方法

分類Dev

特定のタイムゾーンのFortranコードから現在の「標準時間」を取得する方法

分類Dev

文字列のタイムゾーンがわかっている場合は、Date()オブジェクトを特定の時間に設定します

分類Dev

cronジョブのタイムゾーンを変更する

分類Dev

cronジョブのタイムゾーンを変更する

分類Dev

Rails:あるタイムゾーンの将来の会議時間を別のタイムゾーンに変換する

Related 関連記事

  1. 1

    別のタイムゾーンでOracleQueryを実行する方法

  2. 2

    すべてのタイムゾーンの特定の時間に実行するSidekiq

  3. 3

    ユーザーのローカルタイムゾーンに基づいて、特定の時間に毎日のアクションを実行します

  4. 4

    Java Springは特定のタイムゾーンの特定の時間にスケジュールされたタスクを実行します

  5. 5

    別のタイムゾーンで同等の時間を取得する方法

  6. 6

    MomentJS:特定のタイムゾーンと特定の形式の時間をミリ秒に変換する方法

  7. 7

    時刻を瞬間タイムゾーンの特定のタイムゾーンに変換する

  8. 8

    カスタムの長時間実行タイマージョブの進行状況を設定する方法

  9. 9

    Joda時間を使用して、特定のタイムゾーンの現在の実時間を取得する

  10. 10

    特定の時間の間に Quarz Cron ジョブを実行する方法は?

  11. 11

    (Android)時間の生の文字列(タイムゾーン付き)を同じタイムゾーンの別の文字列形式に変換する方法

  12. 12

    JavaScriptで異なるタイムゾーンの特定の時間の現地時間を取得する方法

  13. 13

    JavaScriptで異なるタイムゾーンの特定の時間の現地時間を取得する方法

  14. 14

    Powershell-現地時間を別のタイムゾーンに変換する

  15. 15

    同じ時間を別のタイムゾーンに変換する

  16. 16

    UTCを特定のタイムゾーン時間に変換するJavascript

  17. 17

    CRONジョブを毎日特定の時間に実行する

  18. 18

    特定の時間に遅延ジョブを実行する

  19. 19

    Androidで別のタイムゾーンに関して時間を取得する方法

  20. 20

    NestJs特定の時間に1日3回cronジョブを実行する方法

  21. 21

    別のタイムゾーンとの時間差を計算する

  22. 22

    CESTタイムゾーンとUTCタイムゾーンの間で日時オブジェクトを変換する方法

  23. 23

    UTC時間をブラウザのローカルタイムゾーンに変換する方法は?

  24. 24

    特定のタイムゾーンのFortranコードから現在の「標準時間」を取得する方法

  25. 25

    特定のタイムゾーンのFortranコードから現在の「標準時間」を取得する方法

  26. 26

    文字列のタイムゾーンがわかっている場合は、Date()オブジェクトを特定の時間に設定します

  27. 27

    cronジョブのタイムゾーンを変更する

  28. 28

    cronジョブのタイムゾーンを変更する

  29. 29

    Rails:あるタイムゾーンの将来の会議時間を別のタイムゾーンに変換する

ホットタグ

アーカイブ