如何将DateTime转换为东部时间

时间:2011-05-13 20:44:19

标签: c# asp.net datetime

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

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

有没有办法可以使用C#中的DateTime对象来完成这个?

3 个答案:

答案 0 :(得分:112)

试试这个:

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

答案 1 :(得分:7)

您可以使用ConvertTime类的TimeZoneInfo方法将给定的DateTime转换为Eastern时区并从那里进行比较。

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

答案 2 :(得分:-6)

您需要将逻辑拆分为两个;

  • 检查日期是否超过开始日期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时区它应该工作正常,但否则你需要做一些时区操作。检查其他答案。