【问题标题】:Can I get the "YYYY-MM-DD" string in other languages?我可以得到其他语言的“YYYY-MM-DD”字符串吗?
【发布时间】:2018-08-22 18:24:54
【问题描述】:

我需要在查询编辑器中将“YYYY-MM-DD”显示为模板,以便用户知道如何格式化日期。但是因为应用程序是多语言的,我认为如果我为每种语言显示这个字符串会更容易理解。

所以对于德语,它必须是:“JJJJ-MM-TT”

有没有办法在 C# 中自动获取这些字符串?

【问题讨论】:

  • 也许this 会帮助你
  • 没错,恭喜,无论如何,我不确定这是否是一个真正的问题(无意冒犯,从技术上讲,这仍然是一个好问题),因为 YYYY-MM-DD 在某种程度上是一种惯例开发人员和一般人......在您开始开发这样的解决方案之前询问可能会很有用,因为我认为不存在类似的东西(如果确实存在的话会感兴趣):)
  • 我不知道有任何内置的解决方案可以让您本地化格式字符串。您必须自己实施解决方案。一旦有了相应的映射,就不会太难了。
  • 如果我理解正确,这只是关于如何以自己的语言向用户显示格式的问题,而不是关于如何更改代码中使用的格式模式的问题,所有内容都保持原样。在这种情况下,您只需要某种集合来存储区域设置 ID 和匹配的字符串以显示给您的用户。

标签: c#


【解决方案1】:

我不相信你所问的问题是可能的,如果你检查MSDN,你会看到只有特定的字符文字被保留给 DateTime 格式化程序在解释字符串时使用。任何其他字符文字都将按原样包含在最终的 DateTime 字符串中(假设您的 DateTime 已成功解析)。

但是,您可以向 DateTime/String 引入扩展函数,它采用 CultureInfo 并将“JJJJ-MM-TT”之类的字符串映射到“YYYY-MM-DD”,然后将映射的字符串传递给 DateTime 格式化程序。

您可以尝试在应用程序中支持的每个不同 CultureInfo 中提供自定义 DateTime 格式化程序,但如果不映射它,仍将“JJJJ-MM-TT”之类的字符串传递给本机 DateTime 格式化程序不会给您想要的结果到可解析的格式。

如果您的问题只是询问如何向用户显示“JJJJ-MM-TT”但在解析字符串时仍然使用“YYYY-MM-DD”,那么您只需引入不同的映射您的应用程序中支持的 CultureInfo 以及您想要向用户显示的字符串,然后在呈现查询编辑器时,您查找 CultureInfo 并获取所需的字符串。仍然没有开箱即用的支持。

【讨论】:

  • 我是这么认为的,感谢您的全面回复。
【解决方案2】:

很遗憾,没有,没有内置任何东西。

您必须手动本地化它,就像本地化应用程序中的所有其他字符串一样(例如,通过使用资源文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    相关资源
    最近更新 更多