2011-05-13 3 views
36

मैं एक ऐसा एप्लिकेशन बनाने की कोशिश कर रहा हूं जो वित्तीय बाजार खुले होने पर कुछ कोड ट्रिगर करे। मूल रूप से छद्म कोड में:डेटटाइम से पूर्वी समय में कनवर्ट करने के लिए कैसे करें

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

वहाँ एक रास्ता मैं यह कर सकता सी # में datetime वस्तु का उपयोग कर है?

उत्तर

86

इस प्रयास करें:

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

या कोई और, क्या यह 'पूर्वी डेलाइट टाइम' के लिए भी खाता है? या क्या आपको पता लगाना है कि क्या डीएसटी चालू है, और फिर निर्दिष्ट करें कि कौन सा ज़ोन उपयोग करना है? –

+3

छोटे जोड़े: डेटटाइम का उपयोग करें। यूटीसीएनओ यह समय यूटीसी – michaelAngelo

+7

'पूर्वी मानक समय' के साथ था, डीएसटी को सही तरीके से संभालना चाहिए। दूसरी पंक्ति के लिए http://stackoverflow.com/questions/964894/how-to-convert-time-between-timezones-utc-to-edt – csm8118

5

आप शायद TimeZoneInfo वर्ग के ConvertTime विधि इस्तेमाल कर सकते हैं पूर्वी समय क्षेत्र के किसी दिए गए दिनांक समय परिवर्तित और वहाँ से तुलना करने के लिए।

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

आपको तर्क को दो में विभाजित करने की आवश्यकता है;

  • जांच करें कि दिनांक प्रारंभ दिनांक से अधिक है, startTime > now
  • जांच करें कि तिथि, समाप्ति तिथि से कम है, endTime < now

एक तिथियों के लिए तर्क दोनों को पूरा करना चाहिए (तार्किक और, && साथ)।

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 
} 

आप एट समय क्षेत्र में हैं, तो यह ठीक काम करना चाहिए, लेकिन अन्यथा आप कुछ समय क्षेत्र में गड़बड़ी करने की ज़रूरत है। अन्य उत्तरों की जांच करें।

संबंधित मुद्दे

 संबंधित मुद्दे