2016-12-01 145 views
4

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

字符串DATEOFBIRTH可以是不同的格式,例如:

  • 2017年1月15日
  • 2017年1月15日
  • 2017年1月15日
  • 2017年5月1日

我想将它转换为另一种模式,我把它作为参数。

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

我们假设date =“01/15/2017”,convertToDateFormat =“YYYY/MM/DD”。我怎么能把它改成新格式?

对我来说,问题是要做到通用,以便它可以接受任何参数。

我认为我可以将日期转换为日期时间,然后使用格式的ToString,但你可以提供更好的主意吗?

+1

转换为DateTime和使用文化会最简单,如果你想要一个替代品,你也可以使用一系列的正则表达式来匹配输入和中断它会分解成您的输出的部分。 –

+0

查找语言环境设置https://msdn.microsoft.com/en-us/library/5hh873ya(v=vs.90).aspx – RvdK

+0

“DateTime.ParseExact”具有一个采用多种格式的重载。 – juharr

回答

1

试试这个

public string ConvertStringDateFormat(string date, string convertToDateFormat) 
{ 
    return Convert.ToString(Convert.ToDateTime(date),convertToDateFormat); 
} 
2

我认为这将工作:

(Convert.ToDateTime(date)).ToString(convertToDateFormat) 
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 
} 
+0

当您使用'@'和'\ /'时,您的最终'ToString'格式是否正确? – TheLethalCoder

+0

@TheLethalCoder:'\'*转义*'/'符号作为分隔符 –

+0

其实它应该是'ToString(convertToDateFormat)' – juharr

相关问题