2

ToString 的默认格式是否依赖于任何与服务器相关的内容?这是问题所在:我正在测试并在我的本地机器上测试了一个应用程序,默认情况下,ToString() 以“MM/dd/yyyy hh:mm:ss tt”的格式返回,但是在我们的服务器上它似乎以“dd/MM/yyyy hh:mm:ss tt”的形式返回,这是消费应用程序不期望的并导致错误。

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

在此先感谢您的帮助。

4

3 回答 3

6

格式取决于服务器上定义的默认文化。

如果要应用特定的文化,则需要使用带IFormatProvider, 或将当前线程设置为所需Culture文化的重载UICulture

InvariantCulture是一种文化,不代表特定文化但基于en-US,因此可能适合您的使用:

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

因此,整行将是:

Dim token = String.Format(fmtString, _ 
            uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture), _ 
            [various other params])
于 2011-11-18T20:48:48.753 回答
0

计算机“区域和语言选项”(控制面板)指定日期格式。

您可以对日期格式进行硬编码:例如:

uvExpireData.ToString(@"yyyyMMdd HH.mm.ss")
于 2011-11-18T20:52:27.727 回答
0

如果您无法在服务器上更改文化,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));
   }
}
于 2011-11-18T20:52:42.533 回答