我遇到了datetime的转换问题。我的日期字符串为MM/dd/yyyy
。现在我需要将其转换为yyyy-MM-dd
。
但我面临一些错误。请帮忙
public static DateTime ToDBDateTime(string _dateTime)
{
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
string _convertedDate = string.Empty;
if (_dateTime != null || _dateTime != string.Empty)
{
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat, System.Globalization.CultureInfo.InvariantCulture).ToString(_toDBDateFormat);
//_convertedDate = Convert.ToDateTime(_dateTime).ToString(_toDBDateFormat);
/// Debug.Print(sysFormat);
}
return Convert.ToDateTime(_convertedDate);
}
我想知道有没有办法以各种格式传递datetime
,它会返回预期的格式。
例如:如果我将日期作为dd/MM/yyyy
或MM/dd/yyyy
,则上述函数会将日期格式设为yyyy-MM-dd
。
请提供一些解决datetime
问题的建议。
答案 0 :(得分:4)
我的日期字符串为MM / dd / yyyy
是的......然而你正试图像这样解析它:
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
您需要提供与您的输入相匹配的格式字符串 - 那么为什么要包含时间部分?你可能只想要:
string sysFormat = "MM/dd/yyyy";
但是,这不是问题的结束。您然后将DateTime
返回转换为如下字符串:
.ToString(_toDBDateFormat)
...再次解析:
return Convert.ToDateTime(_convertedDate);
为什么你想要这样做呢?您应该尽可能避免字符串转换。除了其他任何事情,还有什么可以说_toDBDateFormat
(一个引起我怀疑的变量名称)和Convert.ToDateTime
(它总是使用当前的文化进行解析)将是兼容的?
你应该:
DateTime
然后这部分问题也与我有关:
例如:如果我将日期作为dd / MM / yyyy或MM / dd / yyyy传递,则上述函数将返回日期格式为yyyy-MM-dd。
没有“yyyy-MM-dd格式的日期”这样的东西。 DateTime
只是日期和时间值。它没有固有的格式。您可以指定格式化的方式 格式化时。但是,如果您正在使用数据库查询的值,则不应再将其转换为字符串无论如何 - 您应该使用参数化SQL,并将提供为< / em> a DateTime
。
答案 1 :(得分:3)
由于您在格式为“MM / dd / yyyy”的字符串中有日期并希望将其转换为“yyyy-MM-dd”,您可以这样做:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
答案 2 :(得分:1)
使用内置的tostring,如下所示:
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
答案 3 :(得分:0)
我试过这个并且工作正常。
DateTime date1 = new DateTime(2009, 8, 1);
date1.ToString("yyyy-MM-dd hh:mm:ss tt");
您可以在此ToString中应用任何格式。
希望有所帮助 Milind