如何通过示例格式化C#中的日期?

Sla*_*avo 11 .net c# format datetime

在为字符串表示格式化DateTime对象时,C#提供了很大的灵活性,但是,必须知道所有格式字符串才能使用这种灵活性.

如果您想以"星期五,6月24日"的形式显示日期,您可以这样做:

DateTime someDate = DateTime.Now;
Console.Write(someDate.ToString("ddd, MMMM dd"));
Run Code Online (Sandbox Code Playgroud)

虽然这很好用,但是对于更复杂的格式来说很难,特别是对于第一次使用它的开发人员而言.

我想从上面的代码返回相同的结果,但是这样:

DateTime someDate = DateTime.Now;
Console.WriteLine(someDate.ToString("Wed, June 12"));
Run Code Online (Sandbox Code Playgroud)

指定为字符串的日期可以是任意的.本质上,格式必须首先以某种方式解析日期.我知道这种方法有局限性(本地化是一种),但对于简单的场景,它更容易理解.除了自己实现之外,还有什么办法吗?我愿意使用第三方库.

Jon*_*son 14

通常我只是弄清楚正确的格式字符串应该是什么(在你的例子中"ddd, MMMM dd"),然后将它作为常量存储在应用程序的某个地方......

public static class DateTimeFormats
{
    public string DayOfWeekMonthDay = "ddd, MMMM dd";
}
Run Code Online (Sandbox Code Playgroud)

那么你可以参考它

DateTime.Now.ToString(DateTimeFormats.DayOfWeekMonthDay)
Run Code Online (Sandbox Code Playgroud)

  • @Slavo,不,但它可以帮助您保存编写/配置和维护附加组件周围的代码来为您执行此操作. (3认同)

J B*_*ice 6

我可以看到这对于较新的开发人员来说可能看起来更容易,但是在构建"日期字符串日期格式"功能时还有一些问题需要解决.我可以想象这样的函数可能会失败的场景,比如:

  • 你说"五月"; 这是否意味着6月份的日期应格式为"Jun"或"June"?
  • 你说"6月12日"; 这是否意味着6月5日应格式为"6月5日"或"6月5日"?

现在,您可以向新开发人员解释他们需要注意不要使用含糊不清的示例日期格式模板.但是这需要他们已经明白它是如何可能是不明确的.他们需要像格式化函数一样思考.

这就是为什么日期格式字符串的定义,他们是 - 以尽可能具体介绍一下开发者想要/需要产生所需的输出格式.他们尽可能地防止这种含糊不清.

如果开发人员最终需要"像格式化功能一样"来获得他们想要的东西,那么可能值得花时间学习现有的定义.


Jod*_*ell 1

我认为这行不通,你怎么知道是12一天还是一年。我认为现有的歧义实际上比学习相对简单的自定义格式字符串更复杂。

您曾经使用过 VBA 和日期吗?