Datetime 未指定年份时的.NET日期分析
我遇到的情况是,只有在一台特定服务器上,Datetime 未指定年份时的.NET日期分析,datetime,cultureinfo,tryparse,Datetime,Cultureinfo,Tryparse,我遇到的情况是,只有在一台特定服务器上,DateTime.tryParse()方法的行为不正确 该服务器安装了en-US区域性,但此后已更改为en-AU。即使没有这些,我们也在调用TryParse时使用“en-AU”文化信息。 字符串“1/6”被正确解析为除此之外的所有服务器上的2013年6月1日。所有其他服务器可能都是以“en-AU”的形式安装的,但我希望这不会改变任何事情。这台服务器解析为2013年1月6日 当我们创建CultureInfo时,我们使用构造函数将useUserDefault强
DateTime.tryParse()
方法的行为不正确
该服务器安装了en-US区域性,但此后已更改为en-AU。即使没有这些,我们也在调用TryParse时使用“en-AU”文化信息。
字符串“1/6”被正确解析为除此之外的所有服务器上的2013年6月1日。所有其他服务器可能都是以“en-AU”的形式安装的,但我希望这不会改变任何事情。这台服务器解析为2013年1月6日
当我们创建CultureInfo
时,我们使用构造函数将useUserDefault
强制为false,这似乎会强制使用标准的en-AU区域性。
有没有人玩过这种形式的解析——没有指定年份,服务器上某个时候有非美国文化在起作用
有关守则:
UserCulture = new CultureInfo('en-AU', false)
public DateTime? ParseDateTimeString(string s, bool useTime)
{
DateTime? result = null;
DateTime dt;
if (DateTime.TryParse(s, UserCulture, DateTimeStyles.None, out dt))
{
if (s.Length == 3 && s.Substring(1, 1) == "/")
{
Logger.logDebugForce("Parsed datetime string [" + s + "] with culture:"+UserCulture.DisplayName +" datetimeformat.shortdatepattern:"+UserCulture.DateTimeFormat.ShortDatePattern+"; got:"+dt.ToString("s"));
}
if (useTime && DateTimeEx.HasTimeComponent(dt))
{
dt = TimeZoneInfo.ConvertTimeToUtc(dt, UserTimeZone);
}
result = dt;
}
return result;
}
ParseDateTimeString("1/6",false); //returns June 6 2013 on all servers except one, which returns january 6 2013.
干杯唯一的问题是你的最后一句话,当然答案只是“是”。请编辑您的问题,以便更具体地提问。您描述的行为很有意义。而且,
useUserDefault
必须是您自己的变量,因为它不是框架的一部分。请显示演示问题的可重复代码示例。谢谢