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])
提前感谢您的帮助。
答案 0 :(得分:5)
格式取决于服务器上定义的默认文化。
如果您想要应用特定的文化,则需要使用带有IFormatProvider
的重载,或者将当前线程Culture
和UICulture
设置为所需的文化。
InvariantCulture
是一种不代表特定文化但基于en-US
的文化,因此可能适合您的使用:
uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture)
所以,整行将是:
Dim token = String.Format(fmtString, _
uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture), _
[various other params])
答案 1 :(得分:0)
计算机“区域和语言选项”(控制面板)指定日期格式。
您可以对日期格式进行硬编码: 例如:
uvExpireData.ToString(@"yyyyMMdd HH.mm.ss")
答案 2 :(得分: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));
}
}