मैं आपकी समस्या को खत्म हो गया सोचा है और वहाँ एक पहलू यह है कि मैं कल याद है: यहाँ आप यह कैसे (यह भी पढ़ने में आसान है) करना चाहिए है। मैंने सोचा कि Format
फ़ंक्शन को कोई समझ नहीं आया, लेकिन अगर यह अजीब लग रहा है, तो यह समझ में आता है। मुझे समझाने दो।
VB6 में हम
tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT))
क्यों यह अजीब है (या गलत) दिखता है है? Now
एक Date
है। Format
इस तारीख को String
(अच्छी तरह से Variant
में String
समेत सटीक होने के लिए परिवर्तित करता है), लेकिन DateAdd
को Date
पैरामीटर की आवश्यकता है ताकि दिनों को जोड़ने में सक्षम हो सके। DateAdd
इस तरह घोषित किया जाता है:
Function DateAdd(Interval As String, Number As Double, Date)
इसके बजाय एक चेतावनी या एक संकलक त्रुटि देने की, VB6 चुपचाप इस स्ट्रिंग वापस एक Date
में धर्मान्तरित और DateAdd
को पास कर देता। तो मेरी पहली धारणा सिर्फ Format
को छोड़ना था।
लेकिन Format
पर gDATEFORMAT
परिभाषित किया गया है, इस परिणाम पर वांछित प्रभाव हो सकता है। यदि gDATEFORMAT
में केवल एक दिनांक भाग है, तो प्रारूप फ़ंक्शन समय भाग छोड़ देगा!हालांकि यह केवल .NET (C# या VB.NET) में VB6
tAvailableDate = DateAdd("d", 21, Date)
या DateTime.Today
में Date
समारोह का उपयोग कर के बजाय Now
फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है।
लेकिन gDATEFORMAT
में केवल महीने और वर्ष हो सकता है। VB6 (मेरी स्विस स्थान का प्रयोग करके):
Date ==> 27.06.2012
Format(Date,"MM.yyyy") ==> "06.2012"
CDate(Format(Date,"MM.yyyy")) ==> 01.06.2012
आप देख सकते हैं, तारीख स्वरूपण इस मामले में वर्तमान महीने के पहले दिन वापस जाने के लिए प्रभाव होगा। 21 दिनों को जोड़कर आप हमेशा चालू महीने का 22 वां प्राप्त करेंगे। वर्तमान तारीख में 21 दिन जोड़ने से यह काफी अलग है! सी # में आप क्रम तय करने के लिए जो दृष्टिकोण सही है
DateTime today = DateTime.Today;
tAvailableDate = new DateTime(today.Year, today.Month, 22);
के साथ एक ही लक्ष्य को हासिल कर सकता है, आपको पता होना चाहिए या तो क्या gDATEFORMAT
शामिल है या, अगर यह परिवर्तनशील है, दिनांक स्वरूप और फिर जिसके परिणामस्वरूप स्ट्रिंग पार्स एक पाने के लिए फिर से तारीख
आप क्या हासिल करने की कोशिश कर रहे हैं? यदि आप हमें बता सकते हैं, तो आपको केवल उन लोगों की आवश्यकता होगी जो .NET को जानते हैं, न कि लोग जो .NET * और * VB6 जानते हैं। –