Bazı kültür formatı sorunları yüzünden mi?
Evet. Kullanıcınız, zaman ayırıcısının nokta olduğu bir kültürde olmalıdır. Hem ":" hem de "/", özel tarih ve saat biçimlerinde kültüre duyarlı bir şekilde yorumlanır .
Sonuç dizesinin nokta yerine iki nokta üst üste ile ayrıldığından nasıl emin olabilirim?
Şunları belirtmenizi öneririm CultureInfo.InvariantCulture
:
string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
CultureInfo.InvariantCulture);
Alternatif olarak, saat ve tarih ayırıcılarını alıntı yapabilirsiniz :
string text = dateTime.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");
... ancak bu size, varsayılan takvim sisteminin Gregoryen takvimi olmadığı bir kültürde çalışan kullanıcıları alırsanız muhtemelen beklemeyeceğiniz "ilginç" sonuçlar verecektir. Örneğin, aşağıdaki kodu alın:
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"));
}
}
Bu, (18 Eylül 2013'te) aşağıdakilerin çıktısını üretir:
11/12/1434 15:04:31.750
Tahminimce web servisiniz buna şaşıracak!
Aslında sadece değişmez kültürü kullanmayı değil, aynı zamanda bir ISO-8601 tarih biçimine geçmeyi de öneririm :
string text = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Bu, dünya çapında kabul gören bir biçimdir - aynı zamanda sıralanabilir ve ay ve gün düzenini açık hale getirir. (06/07/2013 ise okuyucunun kültürüne göre 7 Haziran veya 6 Temmuz olarak yorumlanabilir.)