我試圖創建一個在金融市場開放時觸發某些代碼的應用程序。基本上在僞代碼:如何將DateTime轉換爲東部時間
if(9:30AM ET < Time.Now < 4:00PM ET) {//do something}
有沒有辦法,我可以做到這一點在C#中使用DateTime對象?
我試圖創建一個在金融市場開放時觸發某些代碼的應用程序。基本上在僞代碼:如何將DateTime轉換爲東部時間
if(9:30AM ET < Time.Now < 4:00PM ET) {//do something}
有沒有辦法,我可以做到這一點在C#中使用DateTime對象?
試試這個:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
你也許可以使用TimeZoneInfo類的ConvertTime方法給定的日期時間轉換爲東部時區,並從那裏做比較。
var timeToConvert = //whereever you're getting the time from
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
您需要將邏輯拆分爲兩部分;
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時區是它應該工作正常,但否則,你需要做一些時區的操作。檢查其他答案。
或其他人,這是否也佔「東部夏令時」?或者您是否必須檢測DST是否打開,然後指定要使用哪個區域? – 2012-01-06 16:19:56
小額外:使用 DateTime.UtcNow這是什麼意思與timeUtc – michaelAngelo 2013-02-07 19:48:15
'東部標準時間'應該正確處理DST。請參閱http://stackoverflow.com/questions/964894/how-to-convert-time-between-timezones-utc-to-edt – csm8118 2013-07-23 18:51:23