DateTimeFormatInfo.InvariantInfo或ToString / TryParseExact中的null

时间:2010-09-14 08:34:20

标签: .net datetime

我想知道这两个调用之间的应用程序的区别是什么,结果是DateTime对象,TryParseExact是否成功,以及ToString操作的结果:

DateTime.TryParseExact(value, "MMM yyyy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out conversionResult)

DateTime.TryParseExact(value, "MMM yyyy", null, DateTimeStyles.None, out conversionResult)

和那两个电话:

conversionResult.ToString("d M yyyy", DateTimeFormatInfo.InvariantInfo)

conversionResult.ToString("d M yyyy")

我知道提供null将导致使用线程文化信息......

当我明确提供格式,没有分隔符等时,我无法弄清楚是什么原因可以用于格式化文化信息......

谢谢,Paweł

1 个答案:

答案 0 :(得分:1)

您希望它使用哪个月的名称,就像文化如何有所作为的一个例子一样?

当然,某些格式不会产生任何影响,但在其他格式中则会有所不同。例如:

using System;
using System.Globalization;
using System.Threading;

class Test
{
    static void Main()
    {
        CultureInfo french = new CultureInfo("fr-FR");
        Thread.CurrentThread.CurrentCulture = french;
        DateTime now = DateTime.Now;
        Console.WriteLine(now.ToString("d MMM yyyy"));
        Console.WriteLine(now.ToString("d MMM yyyy",
                                       CultureInfo.InvariantCulture));
    }
}

结果:

14 sept. 2010
14 Sep 2010

(这是一个相对温和的案例。)

解析或格式化字符串时,需要考虑源/目标是计算机还是用户。如果它是一台计算机,那么不变文化可能是最合适的。如果是用户,他们的文化可能是最合适的。