এটি কিছু সংস্কৃতি ফর্ম্যাট সমস্যা কারণ?
হ্যাঁ. আপনার ব্যবহারকারীকে এমন সংস্কৃতিতে থাকতে হবে যেখানে সময় বিভাজক একটি বিন্দু। ":" এবং "/" উভয়ই কাস্টম সংবেদনশীল উপায়ে কাস্টম তারিখ এবং সময় বিন্যাসে ব্যাখ্যা করা হয় ।
আমি কীভাবে নিশ্চিত করতে পারি যে ফলাফলের স্ট্রিংটি বিন্দুর পরিবর্তে কোলন দিয়ে সীমানাবিদ্ধ হয়?
আমি উল্লেখ করার পরামর্শ দেব CultureInfo.InvariantCulture
:
string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
CultureInfo.InvariantCulture);
বিকল্পভাবে, আপনি কেবল সময় এবং তারিখ বিভাজককে উদ্ধৃত করতে পারেন :
string text = dateTime.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");
... তবে এটি আপনাকে "আকর্ষণীয়" ফলাফল দেবে যা আপনি সম্ভবত এমন প্রত্যাশা করেন না যে আপনি যদি এমন সংস্কৃতিতে ব্যবহারকারীদের চালিত হন যেখানে ডিফল্ট ক্যালেন্ডার সিস্টেম গ্রেগরিয়ান ক্যালেন্ডার নয়। উদাহরণস্বরূপ, নিম্নলিখিত কোড নিন:
using System;
using System.Globalization;
using System.Threading;
class Test
{
static void Main()
{
DateTime now = DateTime.Now;
CultureInfo culture = new CultureInfo("ar-SA"); // Saudi Arabia
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(now.ToString("yyyy-MM-ddTHH:mm:ss.fff"));
}
}
এটি আউটপুট উত্পাদন করে (18 ই সেপ্টেম্বর 2013 এ):
11/12/1434 15:04:31.750
আমার অনুমান যে আপনার ওয়েব পরিষেবাটি এতে অবাক হবে!
আমি আসলে করার সুপারিশ করছি না শুধুমাত্র পরিবর্তিত সংস্কৃতি ব্যবহার করে, কিন্তু এছাড়াও একটি ISO-8601 তারিখ বিন্যাস পরিবর্তন:
string text = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
এটি বিশ্বব্যাপী স্বীকৃত ফর্ম্যাট - এটিও বাছাইযোগ্য এবং মাস এবং দিনের আদেশটি সুস্পষ্ট করে তোলে। (যেখানে 06/07/2013 পাঠকের সংস্কৃতির উপর নির্ভর করে June ই জুন বা July জুলাই হিসাবে ব্যাখ্যা করা যেতে পারে))