【问题标题】:Universal Sortable Format Specifier for only Date仅适用于日期的通用可排序格式说明符
【发布时间】:2018-03-13 11:19:35
【问题描述】:

只需查看Microsot Standard Date and Time Format Strings 即可找到通用日期格式说明符(yyyy-MM-dd)。我可以看到 UniversalSortableDateTimePattern 有一个是“u”。日期输出为:

yyyy'-'MM'-'dd HH':'mm':'ss'Z'

我只对日期部分感兴趣,我真的不想继续输入自定义格式

date.ToString("yyyy-MM-dd").

是否有通用日期格式的格式说明符字母?还是唯一的选择是自定义日期格式?

类似于 DateTimeFormatInfo.UniversalSortableDatePattern

【问题讨论】:

  • 因为它不在列表中,所以不使用自定义格式的唯一选择是使用 "d" 和特定文化(例如 jp-JP => yyyy/MM/dd
  • 你能得到的最好的是var dt = DateTime.Now.ToString("s"),但这会给你T,然后是之后的时间,所以你要么需要像你正在做的那样使用自定义格式,并在配置文件中指定它,如果它遍历多个位置,或者如果它仅在一个类文件中,则将格式指定为只读或 const 值
  • date.ToString("u").Split(' ')[0]?
  • 我的目标是减少我输入的字符数@ManfredRadlwimmer :)
  • 我只定义一个具有常量格式的静态类,例如public const string GlobalDateFormat = "yyyy-MM-dd" 并在任何地方使用它,或者为 DateTime 创建一个扩展方法来精确输出该格式。

标签: c# date datetime datetime-format


【解决方案1】:

我不这么认为。此格式在 mscorlib 中的 datetimeformatinfo.cs 上硬编码。

internal const String universalSortableDateTimePattern = "yyyy'-'MM'-'dd HH':'mm':'ss'Z'";

http://referencesource.microsoft.com/#mscorlib/system/globalization/datetimeformatinfo.cs,115

看来您的案子没有太多选择。

随便用;

date.ToString("yyyy'-'MM'-'dd")

或者您可以在其他地方读取该格式,例如配置文件等。

【讨论】:

  • 很遗憾,他们没有硬编码一个我认为最常用的'yyyy-MM-dd'。
  • @akd 抱歉,但您似乎没有太多选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多