在C#中将任何DateTime格式转换为US DateTime格式

时间:2018-01-29 16:23:17

标签: c# date datetime datetime-format

我想将任何DateTime格式转换为US DateTime格式,即

  

MM-dd-yyyy HH:mm:ss

我的服务器日期可以像尾巴中添加AM / PM一样。我必须处理大多数可能的情况。

CodeValidTill = DateTime.ParseExact(dateObject.ToString(), "MM-dd-yyyy HH:mm:ss", culture);

我也试过以下方法来涵盖大多数情况:

public static DateTime ConvertToUSDateFormat(string dateString)
{
     string[] formats = {"M/d/yyyy", "MMM dd yyyy", "MM-dd-yyyy HH:mm:ss", "M/d/yyyy hh:mm:ss tt", "MM/dd/yyyy hh:mm:ss tt"};
     return DateTime.ParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
}

有没有办法可以编写一个通用方法来处理这种情况?

2 个答案:

答案 0 :(得分:0)

我有许多处理DateTimes的硬性规则:

  • 始终存储,检索和传输UTC值。你不想处理时区。 That way lies madness
  • 避免以字符串形式存储,检索或传输它们。
  • 如果您无法避免以字符串形式存储/检索/传输,请选择固定的字符串编码和格式

如果您遵循所有这些规则,您可以合理地使用DateTimes而不会生气。

如果你不能遵循这些规则,你应该简单地称之为不可能,这样你就可以通过对错误代码进行适当的修改来强制执行规则。

答案 1 :(得分:-1)

同意jdweng。将日期存储为DateTime是一个非常好的主意。此对象与格式无关,可以考虑特殊的文化格式。

实施例

DateTime thisDate = new DateTime(2018, 1, 29); 
Console.WriteLine(thisDate.ToString("d"));          

这应该显示为1/29/2018

More info on DateTime formatting with the "ToString" overloads

相关问题