我有一个自定义日期格式,我想转换为Datetime
所以我可以插入我的数据库,我尝试使用Datetime.ParseExact()
但我觉得我误解了一些东西,因为代码抛出一个System.FormatException
。
我有来自csv的以下日期格式
> 6/11/2014 9:00
我希望将其转换为mysql datetime
格式
> 0000-00-00 00:00:00 OR yyyy-MM-dd HH:mm:ss
请注意,他们没有在原始日期中包含秒数,所以我不确定(没有将它们附加到最后)如何将所有记录设置为只有“00
”秒,因为它不可用。
我尝试了以下引发异常
DateTime myDate = DateTime.ParseExact("6/11/2014 9:00", "yyyy-MM-dd HH:mm",
System.Globalization.CultureInfo.InvariantCulture);
答案 0 :(得分:1)
首先,您需要将字符串转换为日期时间,而不是转换日期时间
string strd = "6/11/2014 9:00";
DateTime dt ;
//convert datetime string to datetime
if(DateTime.TryParse(strd, out dt))
{
//convert datetime to custom datetime format
Console.WriteLine("The current date and time: {0: yyyy-MM-dd HH:mm:ss}",
dt); ;
}
<强>输出强>
答案 1 :(得分:1)
我知道现在回答这个问题已经很晚了但是我真的感到惊讶没有回答考虑使用IFormatProvider
来防止可能的解析错误,因为/
format specifier 或认为string
是您CurrentCulture
的标准日期和时间格式,因此您可以或不可以直接使用DateTime.TryParse(string, out DateTime)
overload。
首先,让我们看一下DateTime.ParseExact
documentation所说的内容:
将指定的日期和时间字符串表示形式转换为它 DateTime等效。 字符串表示的格式必须 完全匹配指定的格式或抛出异常。
在您的情况下,他们不匹配。您应该使用d/MM/yyyy H:mm
格式来解析具有/
作为DateSeparator
的区域性的示例字符串。我几乎总是建议在这种情况下使用DateTime.TryParseExact
method;
string s = "6/11/2014 9:00";
DateTime dt;
if(DateTime.TryParseExact(s, "d/MM/yyyy H:mm", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
// result will be 2014-11-06 09:00:00
}
答案 2 :(得分:0)
如果你知道日期的格式,那么你可以这样做:
string stringDate = "6/11/2014 9:00";
//Your date formats of input
string[] dateFormats = new string[]
{
"d/MM/yyyy H:mm",
"dd/MM/yyyy H:mm",
"dd/MM/yyyy HH:mm",
"dd/MM/yyyy H:mm:ss",
"dd/MM/yyyy HH:mm:ss"
/* And other formats */
};
DateTime convertedDate;
bool isSuccessful = DateTime.TryParseExact(stringDate, dateFormats,
System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out convertedDate);
if (isSuccessful)
{
//If conversion was successful then you can print your date at any format you like
//because you have your date as DateTime object
Console.WriteLine(convertedDate.ToString("dd-MM-yyyy HH:mm:ss")); /* Or other format you want to print */
}
我希望它会对你有所帮助。