É porque algum problema de formato de cultura?
Sim. Seu usuário deve estar em uma cultura em que o separador de tempo seja um ponto. ":" E "/" são interpretados de maneira sensível à cultura em formatos de data e hora personalizados .
Como garantir que a sequência de resultados seja delimitada por dois pontos em vez de ponto?
Eu sugiro especificar CultureInfo.InvariantCulture
:
string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
CultureInfo.InvariantCulture);
Como alternativa, você pode apenas citar os separadores de hora e data:
string text = dateTime.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");
... mas isso fornecerá resultados "interessantes" que você provavelmente não espera se conseguir usuários executando em uma cultura em que o sistema de calendário padrão não seja o calendário gregoriano. Por exemplo, use o seguinte código:
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"));
}
}
Que produz a produção (em 18 de setembro de 2013) de:
11/12/1434 15:04:31.750
Meu palpite é que seu serviço da web ficaria surpreso com isso!
Na verdade, sugiro não apenas usar a cultura invariável, mas também mudar para um formato de data ISO-8601:
string text = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Esse é um formato mais aceito globalmente - também é classificável e torna a ordem do mês e do dia óbvia. (Considerando que 06/07/2013 pode ser interpretado como 7 de junho ou 6 de julho, dependendo da cultura do leitor.)