如何将日期时间转换为东部时间

Posted

技术标签:

【中文标题】如何将日期时间转换为东部时间【英文标题】:How to convert DateTime to Eastern Time 【发布时间】:2011-08-25 06:00:15 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

试试这个:

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

【讨论】:

或其他任何人,这是否也说明了Eastern Daylight Time?还是必须先检测 DST 是否开启,然后指定使用哪个区域? 小补充:使用 DateTime.UtcNow 这就是 timeUtc 的含义 Eastern Standard Time 应该正确处理夏令时。见***.com/questions/964894/… 如果您正在使用 dotnet core 或 monodevelop 并计划在 linux 上运行该代码,请使用 Ameria/New_York instad of Eastern Standard TIme @TonoNam Ameria/New_York 拼写错误(请注意以防其他人像我一样尝试复制和粘贴)。否则,感谢您的评论!【参考方案2】:

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

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

【讨论】:

【参考方案3】:

你需要把逻辑一分为二;

检查日期是否大于开始日期,startTime &gt; now 检查日期是否小于结束日期,endTime &lt; now

对于日期范围,逻辑应同时满足两者(使用逻辑 AND,&amp;&amp;)。

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 时区,它应该可以正常工作,但否则您需要进行一些时区操作。检查其他答案。

【讨论】:

以上是关于如何将日期时间转换为东部时间的主要内容,如果未能解决你的问题,请参考以下文章

使用 pytz 将日期时间从一个时区转换为另一个时区

如何在 Python 中将美国/东部时区转换为美国/中部

如何将UTC时间转化为本地时间

如何在javascript中将日期时间从用户时区转换为EST [重复]

将字符串转换为日期时间对象

具有相同时区信息的两个python日期时间对象的打印方式不同[重复]