1

我需要定义一个自定义格式说明符而不使用IFormatProvider.

var str = DateTime.Now.ToString("myCustomSpecifier");

为什么不使用格式提供程序?因为我在代码生成环境中工作并且ToString不可能指定第二个参数。

同时我们不想保留该方法.ToString(),因此使用扩展方法创建另一个方法是不可接受的。

我尝试搜索Thread.CurrentThread.CurrentUICulture成员以查看是否可以为此设置任何可配置的东西。或者,如果我可以设置默认格式提供程序。我什么也找不到。

有人认为可能吗?如果是这样怎么办?

4

2 回答 2

0
internal const string DATETIME_FORMAT = "dd MMM yyyy";

public void Method()
{
    var str = DateTime.Now.ToString(DATETIME_FORMAT);
}
于 2017-04-21T07:48:01.890 回答
0

您可以直接在当前线程的文化上执行此操作

var cultureInfo = (CultureInfo)CultureInfo.GetCultureInfo("fr-FR").Clone();
cultureInfo.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy";
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;

将此代码放入 App.xaml.cs 的构造函数中。

ToString("d")方法将显示您的自定义伙伴。

于 2017-04-21T07:52:25.853 回答