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
必须是您自己的变量,因为它不是框架的一部分。请显示演示问题的可重复代码示例。谢谢