【问题标题】:Add a custom date time format specifier for default format provider为默认格式提供程序添加自定义日期时间格式说明符
【发布时间】:2012-07-10 04:32:45
【问题描述】:

我需要在不使用IFormatProvider 的情况下定义自定义格式说明符。

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

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

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

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

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

【问题讨论】:

  • 扩展方法是否符合犹太教规?
  • 如果您的意思是定义 .ToCustomString 并使用它;不,这是不可接受的。

标签: c# datetime format datetime-format


【解决方案1】:
internal const string DATETIME_FORMAT = "dd MMM yyyy";

public void Method()
{
    var str = DateTime.Now.ToString(DATETIME_FORMAT);
}

【讨论】:

  • 请编辑您的答案以包含一些解释。仅代码的答案对教育未来的 SO 读者几乎没有作用。您的答案因质量低劣而在审核队列中。
【解决方案2】:

你可以直接在当前线程的文化上做这个

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") 方法将显示您的自定义部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多