title: .NET date parsing when no year specified
body: <p>I have a situation where only on 1 particular server the <code>DateTime.tryParse()</code> method is behaving incorrectly.  </p>
  
  <p>The server was installed with an en-US culture, but has since been changed to en-AU.  Even without that, we are using an 'en-AU' culture info with the call to <code>TryParse.</code></p>
  
  <p>The string '1/6' is parsed correctly to mean 1 June 2013 on every server we have apart from this one.  All of the other servers were probably installed as 'en-AU' but I would hope that should not change anything.  This one server parses in to mean January 6 2013.</p>
  
  <p>When we create the the <code>CultureInfo</code> we use the constructor which forces the <code>useUserDefault</code> to false which would seem to force a standard en-AU culture.
  Has anyone played with this form of parsing - where no year is specified and a non US culture was in play on the server at some point?</p>
  
  <p>The code in question:</p>
  
  <pre><code>    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 &amp;&amp; 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 &amp;&amp; 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.
  </code></pre>
  
  <p>Cheers</p>