क्या इसलिए कि कुछ संस्कृति प्रारूप मुद्दा है?
हाँ। आपका उपयोगकर्ता एक संस्कृति में होना चाहिए जहां समय विभाजक एक बिंदु है। दोनों ":" और "/" को संस्कृति-संवेदनशील तरीके से कस्टम दिनांक और समय स्वरूपों में व्याख्या किया जाता है ।
मैं यह कैसे सुनिश्चित कर सकता हूं कि रिजल्ट स्ट्रिंग को डॉट के बजाय कोलोन द्वारा सीमांकित किया गया है?
मैं निर्दिष्ट करना चाहूंगा 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 को पाठक की संस्कृति के आधार पर 7 जून या 6 जुलाई को व्याख्या की जा सकती है।)