【问题标题】:Format .NET DateTime "Day" with no leading zero格式化 .NET DateTime "Day",不带前导零
【发布时间】:2009-06-12 18:48:40
【问题描述】:

对于下面的代码,我希望 result 等于 2,因为 MSDN 声明“d”“将月份中的日期表示为从 1 到 31 的数字。一位数day 的格式没有前导零。”。

DateTime myDate = new DateTime( 2009, 6, 4 );
string result = myDate.ToString( "d" );

但是,result 实际上等于 '6/4/2009' - 这是短日期格式(也是 'd')。我可以使用“dd”,但这会添加一个前导零,这是我不想要的。

【问题讨论】:

    标签: c# datetime formatting


    【解决方案1】:

    要表明这是一个自定义格式说明符(与标准格式说明符相反),它必须是两个字符长。这可以通过添加一个空格(将显示在输出中)或在单个字母前添加一个百分号来实现,如下所示:

    string result = myDate.ToString("%d");
    

    documentation

    【讨论】:

      【解决方案2】:

      与其使用字符串格式化字符串,不如使用 Day 属性

      DateTime myDate = new DateTime(2009,6,4)
      int result = myDate.Day;
      

      或者如果你真的需要字符串格式的结果

      string result = myDate.Day.ToString();
      

      如果您希望从日期对象中获取特定日期部分,而不是日期的格式化表示,我更喜欢使用属性(日、月、年、DayOfWeek 等)。这样可以阅读代码更容易一些(特别是如果其他人正在阅读/维护它而没有记住各种格式代码)

      【讨论】:

      • 谢谢,你说得很好。不幸的是,今天我需要将格式字符串作为报表布局的一部分放在属性表中 - 所以我不得不使用 %d 值。
      猜你喜欢
      • 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
      相关资源
      最近更新 更多