2013-04-07 1 views
6

2013 में डेलाइट सेविंग टाइम (संयुक्त राज्य) रविवार, 10 मार्च को दोपहर 2:00 बजे शुरू हुआ। तो, कहें, अब 9 मार्च, 2013 है और मैं पहले से बनाए गए प्रतीक्षा करने योग्य टाइमर हैंडल पर निम्न एपीआई को कॉल करता हूं:क्या होता है जब CreateWaitableTimer गैर-मौजूदा दिनांक/समय के लिए सेट किया गया है?

FILETIME ftWhen = //Points as absolute time to March 10th, 2013, at 2:10 AM 
SetWaitableTimer(hTimer, ftWhen, 0, NULL, NULL, TRUE); 

March 10th, 2013, 2:10 AM एक अस्तित्वहीन समय है क्योंकि समय एक घंटे आगे समायोजित किया जाएगा, इसलिए 2 बजे के बजाय यह 3 बजे होगा।

तो मेरा सवाल है, मेरे टाइमर के साथ क्या होगा? (मुझे इस मामले के लिए प्रलेखन नहीं मिल रहा है।)

+0

कुछ मिनटों के लिए बस अपनी आंतरिक घड़ी को अग्रेषित करके ऐसी स्थिति क्यों न बनाएं? –

+0

+1। लेकिन लोग अब तक आगे नहीं देख रहे हैं) – SChepurin

+0

हाँ, मैं अब इसके साथ खेल रहा हूं लेकिन मुझे ओएस और विजुअल स्टूडियो में "अजीब प्रभाव" मिलते हैं। मैंने इसके लिए कुछ आधिकारिक दस्तावेज ढूंढने के लिए सोचा ... – c00000fd

उत्तर

7

मुझे लगता है आप पहले से ही, अपने प्रश्न का उत्तर जानते हैं, क्योंकि अपनी टिप्पणी स्पष्ट रूप से कहा:

// Points _as absolute time_ to March 10th, 2013, at 2:10 AM 

तो तुम बात से अवगत हैं कि SetWaitableTimer() के लिए दस्तावेज़ का कहना है:

का उपयोग सुनिश्चित करें एक यूटीसी आधारित पूर्ण समय, क्योंकि सिस्टम आंतरिक रूप से यूटीसी-आधारित समय का उपयोग करता है।

के बाद से यूटीसी डीएसटी के बारे में जो भी परवाह नहीं करता, अपने टाइमर March 10th, 2013, 3:10 AM, आपके स्थानीय समय पर ट्रिगर किया जाएगा।

+0

हम्म। अच्छी बात। हाँ, मैं उस यूटीसी भाग से चूक गया। यह अब समझ में आता है। इसे इंगित करने के लिए धन्यवाद ... – c00000fd

+0

इस बार संबंधित सभी गड़बड़ों को ध्यान में रखते हुए, हम अभी भी पूछने के लिए एक बहुत अच्छा सवाल है। – SChepurin

3

SetWaitableTimer यूटीसी में दिए जाने वाले pDueTime की अपेक्षा करता है; तो इस तरह के एक गैर-मौजूदा दिनांक/समय के साथ कॉल करने का कोई तरीका नहीं है।

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