स्ट्रिंग से एक तारीख पार्स करना

Visual Basic for Applications:
स्ट्रिंग से एक तारीख पार्स करना

कैसे करें:

VBA स्ट्रिंग को तारीख में पार्स करने के लिए CDate फंक्शन या DateValue फंक्शन का उपयोग करके एक सीधा तरीका प्रदान करता है। हालांकि, यह महत्वपूर्ण है कि स्ट्रिंग पहचानने योग्य तारीख प्रारूप में हो।

CDate का उपयोग करके एक मूल उदाहरण यहाँ है:

Sub ParseDateUsingCDate()
    Dim dateString As String
    Dim parsedDate As Date
    
    dateString = "2023-04-01"
    parsedDate = CDate(dateString)
    
    Debug.Print "Parsed Date: "; parsedDate
End Sub

यदि आप यह कोड चलाते हैं, तो तत्काल विंडो (VBA संपादक में Ctrl+G के माध्यम से सुलभ) में आउटपुट होगा:

Parsed Date: 4/1/2023 

वैकल्पिक रूप से, आप DateValue फंक्शन का उपयोग कर सकते हैं, जो खासतौर पर तारीखों के लिए अधिक विशिष्ट है (समय भाग को अनदेखा करता है):

Sub ParseDateUsingDateValue()
    Dim dateString As String
    Dim parsedDate As Date
    
    dateString = "April 1, 2023"
    parsedDate = DateValue(dateString)
    
    Debug.Print "Parsed Date using DateValue: "; parsedDate
End Sub

इसके लिए नमूना आउटपुट इसी तरह तत्काल विंडो में दिखाई देगा:

Parsed Date using DateValue: 4/1/2023

ध्यान रखें कि पार्सिंग की सफलता स्ट्रिंग के तारीख प्रारूप के सिस्टम या एप्लीकेशन सेटिंग्स से मेल खाने पर निर्भर करती है।

गहराई में जानकारी

आंतरिक रूप से, जब VBA एक स्ट्रिंग को तारीख में पार्स करता है, तो यह विंडोज़ ऑपरेटिंग सिस्टम की क्षेत्रीय सेटिंग्स का उपयोग करता है तारीख प्रारूप की व्याख्या के लिए। यह समझना महत्वपूर्ण है क्योंकि एक सिस्टम पर पूरी तरह से पार्स किया गया तारीख स्ट्रिंग एक अन्य पर एक त्रुटि का कारण बन सकता है यदि वे अलग तारीख/समय सेटिंग्स का उपयोग करते हैं।

ऐतिहासिक रूप से, तारीखों को संभालना एप्लीकेशनों में एक सामान्य बग का स्रोत रहा है, विशेषकर उनका इंटरनेशनल उपयोग होने पर। VBA में इस क्षेत्रीय सेटिंग्स पर निर्भरता यही कारण है कि कुछ लोग विभिन्न सिस्टमों में स्पष्ट तारीख प्रतिनिधित्व और पार्सिंग के लिए आईएसओ 8601 प्रारूप (जैसे, “YYYY-MM-DD”) जैसे विकल्पों पर विचार कर सकते हैं। दुर्भाग्य से, VBA स्वाभाविक रूप से आईएसओ 8601 का समर्थन नहीं करता है, और सख्त अनुपालन के लिए मैनुअल पार्सिंग की आवश्यकता होगी।

CDate या DateValue से परे जटिल तारीख पार्सिंग के लिए, या सिस्टम स्थानी�