.NET DateTime.ToString () - настройка формата по умолчанию - PullRequest
1 голос
/ 19 ноября 2011

Зависит ли формат ToString по умолчанию от того, что связано с сервером? Вот проблема: я тестирую и проверил приложение на моей локальной машине, и ToString () по умолчанию возвращается в формате «MM / dd / гггг чч: мм: сс тт», однако на нашем сервере оно по-видимому, возвращается как «дд / мм / гггг чч: мм: сс тт», что приложение-потребитель не ожидает и вызывает ошибки.

Dim uvExpireDate = DateTime.Now.AddMinutes(1)
Dim token = String.Format(fmtString, uvExpireDate.ToUniversalTime().ToString(), [various other params])

Заранее спасибо за помощь.

Ответы [ 3 ]

5 голосов
/ 19 ноября 2011

Форматирование зависит от культуры по умолчанию, определенной на сервере.

Если вы хотите применить конкретную культуру, вам нужно использовать перегрузку, которая принимает IFormatProvider, или установить текущую нить Culture и UICulture на требуемую культуру.

InvariantCulture - это культура, которая не представляет особой культуры, но основана на en-US, поэтому может быть подходящей для вашего использования:

uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture)

Итак, вся строка будет:

Dim token = String.Format(fmtString, _ 
            uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture), _ 
            [various other params])
0 голосов
/ 19 ноября 2011

MSDN показывает, как использовать код для установки языка, если вы не можете изменить его на сервере (может применяться закон непреднамеренных последствий):

using System;
using System.Globalization;
using System.Threading;

public class FormatDate
{
   public static void Main()
   {
      DateTime dt = DateTime.Now;
      // Sets the CurrentCulture property to U.S. English.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      // Displays dt, formatted using the ShortDatePattern
      // and the CurrentThread.CurrentCulture.
      Console.WriteLine(dt.ToString("d"));

      // Creates a CultureInfo for German in Germany.
      CultureInfo ci = new CultureInfo("de-DE");
      // Displays dt, formatted using the ShortDatePattern
      // and the CultureInfo.
      Console.WriteLine(dt.ToString("d", ci));
   }
}
0 голосов
/ 19 ноября 2011

Компьютер «Параметры региона и языка» (панель управления) задает формат даты.

Вы можете жестко закодировать формат даты: Например:

uvExpireData.ToString(@"yyyyMMdd HH.mm.ss")
...