【发布时间】:2016-06-03 09:49:42
【问题描述】:
我正在尝试下面的代码来尝试解析时间并将其添加到当前日期:
string[] sDatetimeFormat1 = { "M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm" };
string[] sDatetimeFormat2 = { "HH:mm tt", "h:m t", "HH:mm:ss",
"HH:mm:ss tt", "h:m:s t"};
if (DateTime.TryParseExact(InputDateOrTime.Replace("\"", ""),
sDatetimeFormat1, new CultureInfo("en-US"), DateTimeStyles.None,
out sStartTime))
{
//something
}
else if (TimeSpan.TryParse(InputDateOrTime.Replace("\"", ""), out tsInput))
{
sStartTime = DateTime.Parse(DateTime.Today.ToString() + tsInput);
}
输入可能出现在 sDateTimeFormat1 中,也可能出现在 sDatetimeFormat2 中,如果是 sDatetimeFormat1,那么我只需要解析它。如果是 sDatetimeFormat2,那么我需要将该时间添加到当前日期。
例如: “06/03/2016 14:22:00”应解析为“06/03/2016 2:22:00 PM”
“2:22 PM”应该被解析为“06/03/2016 2:22:00 PM”(即今天+时间跨度:格式不重要,但它应该代表相同的日期时间)。
.Net版本为2.0
【问题讨论】:
-
stackoverflow.com/questions/13044603/… 这与我的要求相反:)
-
我认为你不需要做任何事情。 Net 库会产生您正在寻找的结果。
-
@jdweng,它不起作用,它每次都返回 false ..
-
因此 starttime 将有“01/01/0001 ...”
-
当解析失败时,DateTime 的默认值为 01/01/0001。当它成功解析没有问题时,日期将设置为当前日期,您无需添加任何内容。所以我认为你需要做的是当解析失败时中止应用程序或将 DateTime 设置为当前日期。不确定日期的格式。