-3

The doco for TimeSpan.Parse(String) http://msdn.microsoft.com/en-us/library/se73z7b9(v=vs.110).aspx does not explicitly say what culture is used.

Simon
  • 33,714
  • 21
  • 133
  • 202

1 Answers1

2

Short answer - System.Threading.Thread.CurrentThread.CurrentCulture;

Long answer - Source will tell you the truth:

public static TimeSpan Parse(String s) {
    /* Constructs a TimeSpan from a string.  Leading and trailing white space characters are allowed. */
    return TimeSpanParse.Parse(s, null);
}

and couple methods deep into the code:

public static DateTimeFormatInfo GetInstance(IFormatProvider provider) {

    // Fast case for a regular CultureInfo
    DateTimeFormatInfo info;
    CultureInfo cultureProvider = provider as CultureInfo;
    if (cultureProvider != null && !cultureProvider.m_isInherited)
    {
        return cultureProvider.DateTimeFormat;
    }

    // Fast case for a DTFI;
    info = provider as DateTimeFormatInfo;
    if (info != null) {
        return info;
    }

    // Wasn't cultureInfo or DTFI, do it the slower way
    if (provider != null) {
        info = provider.GetFormat(typeof(DateTimeFormatInfo)) as DateTimeFormatInfo;
        if (info != null) {
            return info;
        }
    }

    // Couldn't get anything, just use currentInfo as fallback
    return CurrentInfo;
 }

CurrentInfo defined as follows:

public static DateTimeFormatInfo CurrentInfo {
    get {
        Contract.Ensures(Contract.Result<DateTimeFormatInfo>() != null);
        System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
        if (!culture.m_isInherited) {
            DateTimeFormatInfo info = culture.dateTimeInfo;
            if (info != null) {
                return info;
            }
        }
        return (DateTimeFormatInfo)culture.GetFormat(typeof(DateTimeFormatInfo));
    }
}
MarcinJuraszek
  • 124,003
  • 15
  • 196
  • 263