স্ট্রিং থেকে তারিখ পার্স করা

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 এর মাধ্যমে অ্যাক্সেস করা Instant Window-এ আউটপুট হবে:

Parsed Date: 4/1/2023

বিকল্পভাবে, আপনি DateValue ফাংশন ব্যবহার করতে পারেন, যা তারিখগুলিকে আরও বিশেষভাবে নির্দিষ্ট করে (সময় অংশটি উপেক্ষা করে):

Sub ParseDateUsingDateValue()
    Dim dateString As String
    Dim parsedDate As Date
    
    dateString = "এপ্রিল 1, 2023"
    parsedDate = DateValue(dateString)
    
    Debug.Print "DateValue ব্যবহার করে পার্স করা তারিখ: "; parsedDate
End Sub

এর জন্য নমুনা আউটপুটও Instant Window-এ একইরকম দেখাবে:

DateValue ব্যবহার করে পার্স করা তারিখ: 4/1/2023

মনে রাখবেন যে স্ট্রিংয়ের তারিখ ফরম্যাট সিস্টেম অথবা অ্যাপ্লিকেশন সেটিংসের সাথে মিলে যাওয়ার উপর পার্সিংয়ের সাফল্য নির্ভর করে।

গভীর ডুব

আন্তর্জাতিকভাবে, যখন VBA একটি স্ট্রিংকে একটি তারিখে পার্স করে, এটি উইন্ডোজ অপারেটিং সিস্টেমের আঞ্চলিক সেটিংস ব্যবহার করে তারিখ ফরম্যাট বোঝার জন্য। এটি বুঝতে গুরুত্বপূর্ণ কারণ একটি তারিখ স্ট্রিং যা এক সিস্টেমে সঠিকভাবে পার্স হয়েছে সেটি অন্য একটি সিস্টেমে ভিন্ন তারিখ/সময় সেটিংস ব্যবহার করার কারণে ত্রুটি ঘটাতে পারে।

ঐতিহাসিকভাবে, তারিখগুলি সম্পর্কে কাজ করা অ্যাপ্লিকেশনগুলিতে মাঝে মাঝে বাগের একটি সাধারণ উৎস হয়ে উঠেছে, বিশেষ করে যেগুলি আন্তর্জাতিকভাবে ব্যবহৃত হয়। VBA-এ এই আঞ্চলিক সেটিংসের উপর নির্ভরতা অন্যান্য পদ্ধতি যেমন ISO 8601 ফরম্যাট (যেমন, “YYYY-MM-DD”) বেছে নেওয়ার জন্য কিছু কারণ যা বিভিন্ন সিস্টেমে অমলিন তারিখ প্রতিনিধিত্ব এবং পার্সের জন্য নির্দিষ্ট। দুর্ভাগ্যবশত, VBA স্বাভাবিকভাবে ISO 8601 সমর্থন করে না, এবং কঠোর মানানুযায়ী পার্সের জন্য ম্যানুয়াল পার্সিং প্রয়োজন হবে।

CDate বা DateValue দ্বারা সামলানো যায় না এমন জটিল তারিখ পার্সিং বা সিস্টেম লোকেল সেটিংসের উপর নির্বিশেষে ধারাবাহিক পার্সিং নিশ্চিত করতে, প্রোগ্রামাররা কাস্টম পার্সিং ফাংশনের দিকে ঝুঁকতে পারে। এগুলি তারিখ স্ট্রিংটি উপাদানে বিভক্ত করা (বছর, মাস, দিন) এবং DateSerial ফাংশন ব্যবহার করে একটি তারিখ গঠন করা জড়িত হতে পারে। অন্যরা এই ধরণের কাজের জন্য আন্তর্জাতিকীকরণের সাথে ডিজাইন করা আরও শক্তিশালী ভাষা বা লাইব্রেরিগুলি বেছে নিতে পারে।