【问题标题】:Override date formatting for a culture in .net覆盖 .net 中文化的日期格式
【发布时间】:2010-11-29 17:28:43
【问题描述】:

我们的内置 .net 日期格式存在问题。我们使用缩写月份格式:

string.Format("{0:MMM}", date);

对于我们的捷克网站,它输出罗马数字(例如,“IV”,在 en-GB 中为“Apr”)。我们想将其更改为一些自定义缩写。

最好的方法是什么?我真的不想在视图中添加 if 语句。我应该使用 DateTimeFormatInfo 吗?

另外,微软如何决定格式,是否基于标准?

【问题讨论】:

    标签: .net datetime string-formatting


    【解决方案1】:

    您想使用哪种文化?您可以在对string.Format 的调用中指定它。例如:

    string text = string.Format(CultureInfo.InvariantCulture, "{0:MMM}", date);
    

    请注意,如果真的就是您要格式化的所有内容,则调用ToString 会更简单:

    string text = date.ToString("MMM", CultureInfo.InvariantCulture);
    

    (这样你就不需要所有复合格式的东西了。)

    【讨论】:

    • 这是一个多语言网站,我们根据浏览器设置(或 cookie)设置线程文化。所有其他语言都输出所需的格式。我们需要改变的只是 cs-CZ 文化。
    • @JontyMC:在这种情况下,当您设置线程文化时,也许您应该只使用特殊情况的 cs-CZ 以完全使用不同的文化,或者使用不同的DateTimeFormatInfo。跨度>
    • 真的没有办法改默认的吗。我也有一个多语言网站,但客户端不喜欢某些语言的默认设置。
    • @Richard:更改默认值是什么?文化?是的...您可以在每个线程的基础上更改它。
    • @Richard:系统是不可变的,但您可以使用 CultureInfo.Clone 创建可变副本。只需克隆您感兴趣的那些,当您为特定请求(或您正在做的任何事情 - 上下文不清楚)设置默认文化时,看看它是否是您需要“自定义”版本的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多