簡體   English   中英

如何將日期時間轉換為東部時間

[英]How to convert DateTime to Eastern Time

我正在嘗試創建一個在金融市場開放時觸發一些代碼的應用程序。 基本上在偽代碼中:

if(9:30AM ET < Time.Now < 4:00PM ET) {//do something}

有沒有辦法使用 C# 中的 DateTime object 來做到這一點?

試試這個:

var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);

您可以使用TimeZoneInfo類的ConvertTime方法將給定的DateTime轉換為Eastern時區並從那里進行比較。

var timeToConvert = //whereever you're getting the time from
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);

你可以為它創建一個擴展方法,像這樣,

    using System;
    using System.Runtime.InteropServices;

    public static DateTime ConvertToEasternTime(this DateTime value)
    {
        TimeZoneInfo tz = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
            ? TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
            : TimeZoneInfo.FindSystemTimeZoneById("America/New_York");

        return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
    }

你可以像這樣使用它,

EasternTime = DateTime.Today.ConvertToEasternTime(),

只需確保您正在導入命名空間以使用此方法。

你需要將邏輯分成兩部分;

  • 檢查日期是否超過開始日期, startTime > now
  • 檢查日期是否小於結束日期, endTime < now

對於日期范圍,邏輯應滿足兩者(使用邏輯AND, && )。

DateTime startTime = DateTime.Today.AddHours(9).AddMinutes(30);
DateTime endTime = DateTime.Today.AddHours(12+4);
DateTime now = DateTime.Now;
if(startTime > now && endTime < now) {
    // do something
}

如果你在ET時區它應該工作正常,但否則你需要做一些時區操作。 檢查其他答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM