【问题标题】:Convert Datetime to required String format [duplicate]将日期时间转换为所需的字符串格式 [重复]
【发布时间】:2014-04-23 17:32:06
【问题描述】:

我到处寻找这个解决方案,但找不到它

DateTime now=DateTime.Now;

我想把它转换成

18th March

目前我正在使用

MessageBox.Show(DateTime.Now.ToString("d MMMM"));

哪个显示

3 月 18 日。

对于 1 它应该显示 1st

2-2次

3-3 次

4-4

有什么解决办法吗?

【问题讨论】:

  • 您需要支持哪些文化?我不相信在.NET中有任何东西可以轻松支持这样的序数。如果你需要英语,我会使用一个简单的数组。
  • 如果你使用'st'、'nd'、'rd'和'th',不要忘记'of'关键字。 3 月 4 日
  • 没有format specifier 来获取序数 - 你必须自己编写函数,才能支持你想要支持的文化。

标签: c# .net winforms datetime


【解决方案1】:

这样的事情会帮助你:(未经测试给出一个想法)

DateTime dt = DateTime.Now;
int day = dt.Date.Day % 10;

MessageBox.Show(dt.ToString("d" + ((day == 1) ? “st” : (day == 2) ? “nd” : (day == 3) ? “rd” : (day == 4) ? “th” : “th”) + "MMMM"));

【讨论】:

    【解决方案2】:

    你可能不得不使用这样的函数,

      static string ToEnglishOrdinal (int number) {
          if ((number % 100 < 10) || (number % 100 >= 14)) {
            switch (number % 10) {
              case 1: {
                return number.ToString () + "st";
              }
    
              case 2: {
                return number.ToString () + "nd";
              }
    
              case 3: {
                return number.ToString () + "rd";
              }
            }
          }
    
          return number.ToString () + "th";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多