将日期格式的字符串转换为另一种日期格式的字符串

4

我想将一个日期格式的字符串转换为另一种格式的字符串。

字符串“ DateOfBirth”可以是不同的格式,例如:

  • 01/15/2017
  • 01-15-2017
  • 1.15.2017
  • 1.5.2017

我希望将其转换为另一种模式,该模式作为参数传递给我。

public string ConvertStringDateFormat(string date, string convertToDateFormat)
{
}

假设date = "01/15/2017",convertToDateFormat = "YYYY/MM/DD",我该如何将其转换为新格式?
对我来说,问题在于通用性,以便接受任何参数。
我想过将日期转换为DateTime,然后使用ToString格式化,但您能否提供更好的建议?

1
转换为DateTime并使用文化可能是最简单的方法,如果您想要另一种选择,您也可以使用一系列正则表达式来匹配输入并将其分解为输出的部分。 - James Gould
查找区域设置 https://msdn.microsoft.com/zh-cn/library/5hh873ya(v=vs.90).aspx - RvdK
DateTime.ParseExact有一个重载,可以接受多个格式。 - juharr
3个回答

4

将其解析为 DateTime,然后转换回 String

public string ConvertStringDateFormat(string date, string convertToDateFormat) {
  return DateTime
    .ParseExact(date,
       new string[] { "M/d/yyyy", "M-d-yyyy", "M.d.yyyy" },
       CultureInfo.InvariantCulture, 
       DateTimeStyles.AssumeLocal)
    .ToString(convertToDateFormat); // convertToDateFormat = @"yyyy\/MM\/dd" for YYYY/MM/DD
}

你的最终 ToString 格式是否正确,因为你使用了 @\/ - TheLethalCoder
@TheLethalCoder:反斜杠“\”用作分隔符转义正斜杠“/”。 - Dmitry Bychenko
实际上应该是 ToString(convertToDateFormat) - juharr
@DmitryBychenko 哦,我没有意识到在 toString 调用中“/”是一个特殊字符。 - TheLethalCoder

2
我认为这会起作用:

   (Convert.ToDateTime(date)).ToString(convertToDateFormat)

1
尝试这个。
public string ConvertStringDateFormat(string date, string convertToDateFormat)
{
    return Convert.ToString(Convert.ToDateTime(date),convertToDateFormat);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接