যদিও এমএসডিএন বলে যে "এস" এবং "ও" ফর্ম্যাটগুলি মানটিকে প্রতিফলিত করে, তারা মনে হয় এটির কেবলমাত্র একটি সীমিত উপসেট পার্স করতে সক্ষম হবে। স্ট্রিংয়ে টাইম জোনের স্পেসিফিকেশন থাকলে বিশেষত এটি একটি সমস্যা। (এটি বেসিক ISO8601 ফর্ম্যাটগুলির জন্য, বা হ্রাস নির্ভুল ফর্ম্যাটগুলির জন্যও করে না - তবে এটি ঠিক আপনার ক্ষেত্রে নয়।) সুতরাং আমি যখন ISO8601 পার্স করার ক্ষেত্রে কাস্টম বিন্যাসের স্ট্রিং ব্যবহার করি। বর্তমানে আমার পছন্দের স্নিপেটটি হ'ল:
static readonly string[] formats = {
// Basic formats
"yyyyMMddTHHmmsszzz",
"yyyyMMddTHHmmsszz",
"yyyyMMddTHHmmssZ",
// Extended formats
"yyyy-MM-ddTHH:mm:sszzz",
"yyyy-MM-ddTHH:mm:sszz",
"yyyy-MM-ddTHH:mm:ssZ",
// All of the above with reduced accuracy
"yyyyMMddTHHmmzzz",
"yyyyMMddTHHmmzz",
"yyyyMMddTHHmmZ",
"yyyy-MM-ddTHH:mmzzz",
"yyyy-MM-ddTHH:mmzz",
"yyyy-MM-ddTHH:mmZ",
// Accuracy reduced to hours
"yyyyMMddTHHzzz",
"yyyyMMddTHHzz",
"yyyyMMddTHHZ",
"yyyy-MM-ddTHHzzz",
"yyyy-MM-ddTHHzz",
"yyyy-MM-ddTHHZ"
};
public static DateTime ParseISO8601String ( string str )
{
return DateTime.ParseExact ( str, formats,
CultureInfo.InvariantCulture, DateTimeStyles.None );
}
আপনি যদি টিজেড-কম স্ট্রিংগুলি পার্স করার আপত্তি না জানায় (আমি করি) তবে আপনি কভারেড ফর্ম্যাট পরিবর্তনের সংখ্যাটি প্রসারিত করতে "" s "লাইন যুক্ত করতে পারেন।