【问题标题】:Exchanging the formats for date in strings交换字符串中日期的格式
【发布时间】:2015-01-10 13:30:46
【问题描述】:

我有一个格式为"2/11/2013 19:14:00" (MM/DD/YYYY HH:MM:SS) 格式的字符串日期,我想将其转换成这样的格式字符串11 February 2013 19:14

我怎样才能以最有效的方式做到这一点?

【问题讨论】:

  • 附带说明,没有DDYYYYSS 说明符。所有自定义说明符都区分大小写。 MM 是几个月,mm 是几分钟。阅读:Custom Date and Time Format Strings

标签: c# .net string datetime


【解决方案1】:

如果您的2/11/2013 19:14:00 值为DateTime,只需将DateTime 格式化为.ToString() method 之类的;

dateTimeValue.ToString("dd MMMM yyyy HH:mm", CultureInfo.InvariantCulture);

如果你的2/11/2013 19:14:00值是string,而不是DateTime,你可以先解析成DateTime,然后你可以像这样格式化;

string s = "2/11/2013 19:14:00";
DateTime dt;
if(DateTime.TryParseExact(s, "M/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture,
                          DateTimeStyles.None,
                          out dt))
{
  Console.WriteLine(dt.ToString("dd MMMM yyyy HH:mm",
                                 CultureInfo.InvariantCulture));
}

这里是 demonstration

【讨论】:

  • ...在您将当前字符串(使用 DateTime.Parse 或 DateTime.TryParse)转换为 DateTime 类型之后。
  • 是否回答了上述问题? ?
  • @EhsanSajjad 是的,为什么不呢?
【解决方案2】:

首先将您的string 转换为DateTime

DateTime dt = DateTime.ParseExact(oldString, "M/dd/yyyy HH:mm:ss",
    CultureInfo.InvariantCulture);

然后将此DateTime 转换为string

string newString = dt.ToString("dd MMMM yyyy HH:mm",
    CultureInfo.InvariantCulture);

【讨论】:

  • 您无法使用 MM 说明符解析 2。它应该是M。还提供一个IFormatProvider,它具有/ 作为DateSeparator,如InvariantCulture,以防止解析错误。
【解决方案3】:

如果输入日期实际上是string,最简单的做法是先将其转换为DateTime

DateTime d = DateTime.ParseExact(oldDateString, "M/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

然后将其转换回string,正如Soner 已经建议的那样:

string newDateString = d.ToString("dd MMMM yyyy HH:mm", CultureInfo.InvariantCulture);

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2018-08-30
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多