.NET DateTime.ToString()-默认格式设置
ToString的默认格式是否依赖于任何与服务器相关的内容?问题是:我正在本地计算机上测试并已经测试了一个应用程序,默认情况下,ToString()以“MM/dd/yyyyy hh:MM:ss tt”格式返回,但是在我们的服务器上,它似乎以“dd/MM/yyyy hh:MM:ss tt”的形式返回,这是消费应用程序所不期望的,并且会导致错误.NET DateTime.ToString()-默认格式设置,.net,vb.net,datetime,cultureinfo,date-formatting,.net,Vb.net,Datetime,Cultureinfo,Date Formatting,ToString的默认格式是否依赖于任何与服务器相关的内容?问题是:我正在本地计算机上测试并已经测试了一个应用程序,默认情况下,ToString()以“MM/dd/yyyyy hh:MM:ss tt”格式返回,但是在我们的服务器上,它似乎以“dd/MM/yyyy hh:MM:ss tt”的形式返回,这是消费应用程序所不期望的,并且会导致错误 Dim uvExpireDate = DateTime.Now.AddMinutes(1) Dim token = String.Format(fmtStr
Dim uvExpireDate = DateTime.Now.AddMinutes(1)
Dim token = String.Format(fmtString, uvExpireDate.ToUniversalTime().ToString(), [various other params])
提前感谢您的帮助。格式取决于服务器上定义的默认区域性 如果希望应用特定的区域性,则需要使用一个重载,该重载接受
IFormatProvider
,或者将当前线程Culture
和UICulture
设置为所需的区域性
InvariantCulture
是一种不代表特定区域性的区域性,但基于en-US
,因此可能适合您使用:
uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture)
因此,整个路线将是:
Dim token = String.Format(fmtString, _
uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture), _
[various other params])
计算机“区域和语言选项”(控制面板)指定日期格式
您可以硬编码日期格式:
例如:
uvExpireData.ToString(@"yyyyMMdd HH.mm.ss")
演示如果无法在服务器上更改区域性,如何使用代码设置区域性(可能会应用意外后果定律):
尝试切换(CultureInfo.InvariantCulture)+1,灯泡就会打开。只有我们的加拿大客户有问题:)非常感谢。这是一个复杂的问题。CultureInfo基于机器的语言,而不是机器的格式选项。这是两件不同的事情,也是Windows/Net二分法在这一领域造成如此多地狱的部分原因。例如,我在澳大利亚。我的日期格式设置为d/MM/yyyy。在“格式”下拉列表中,显示“英语(澳大利亚)”。但是,我的语言是en-US,因为没有en-AU语言。我的计算机上只安装了1种语言,我可以通过转到“区域”下的“其他设置…”来检查这一点。CultureInfo.CurrentUICulture=new CultureInfo(“en-AU”);var culture=CultureInfo.CurrentUICulture;系统.诊断.调试.写线(培养基);System.Diagnostics.Debug.WriteLine(DateTime.Now);这段代码应该输出一个澳大利亚格式的日期,但是它没有。输出是:en AU 3/4/2016 10:54:28 AM(日期和月份大约是错误的)调试器告诉我当前区域性是FullDateTimePattern=“ddddd,d MMMM yyyy h:mm:ss tt”,而ToString()给了我完全不同的东西。
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));
}
}