如何将DateTime转换为东部时间

loc*_*boy 51 c# asp.net datetime

我正在尝试创建一个在金融市场开放时触发一些代码的应用程序.基本上是伪代码:

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

有没有办法可以使用C#中的DateTime对象来做到这一点?

Die*_*xel 121

试试这个:

var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
Run Code Online (Sandbox Code Playgroud)

  • 或其他任何人,这也是"东部夏令时"的原因吗?或者您是否必须检测DST是否已打开,然后指定要使用的区域? (9认同)
  • "东部标准时间"应该正确处理DST.请参阅http://stackoverflow.com/questions/964894/how-to-convert-time-between-timezones-utc-to-edt (8认同)
  • 如果您使用 dotnet core 或 monodevelop 并计划在 Linux 上运行该代码,请使用“Ameria/New_York”而不是“Eastern Standard TIME”。 (4认同)
  • 小补充:使用DateTime.UtcNow这就是timeUtc的含义 (3认同)
  • @TonoNam `Ameria/New_York` 拼写错误(只是注意到它,以防其他人像我一样尝试复制和粘贴)。否则,谢谢您的评论! (3认同)

R0M*_*RMY 9

您可以使用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);
Run Code Online (Sandbox Code Playgroud)