【发布时间】:2011-09-14 17:24:16
【问题描述】:
我有一个字符串变量,可以存储完整日期或部分日期:
1) 完整日期:12/12/2010 12:33 AM
2) 部分日期:12:33 AM(没有日期字段只有时间)
我正在尝试找出解析字符串以确定字符串是否缺少日期字符串的最佳方法。原因是,在我的代码中,如果缺少日期,我将在字符串中附加一个默认日期(例如 1/1/1900)。请记住,时间可能有多种格式。
更新 - 我对这个问题的特别回答。
正如所有“帖子”所说,这个问题有多种答案,这是我最终使用的,希望它可以帮助其他人*:
public DateTime ProcessDateAndTime(string dateString)
{
string dateAndTimeString = dateString;
string[] timeFormats = new string[]
{
"hh:mm tt", "hh:mm:ss tt",
"h:mm tt", "h:mm:ss tt",
"HH:mm:ss", "HH:mm", "H:mm"
};
// check to see if the date string has a time only
DateTime dateTimeTemp;
if (DateTime.TryParseExact(dateString, timeFormats,
CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out dateTimeTemp))
{
// setting date to 01/01/1900
dateAndTimeString = new DateTime(1900, 1, 1).ToShortDateString() + " " + dateString;
}
return DateTime.Parse(dateAndTimeString);
}
*注意:此方法基于以下假设,即您的应用程序中仅使用了特定数量的时间格式,并且保证传入格式正确的日期和时间或仅时间字符串(预验证删除垃圾文本)。
【问题讨论】:
-
时间可以是各种格式,也可以是整个日期时间字符串?
-
该用户是在新应用程序中输入的,还是数据挖掘/现有数据?如果它是一个新的应用程序,不要试图解决这个问题 - 让用户以正确的格式为您提供数据,并以特定格式记录您期望的数据。或者为他们提供 GUI 控件,为您提供正确的数据。
-
Matt - 时间可以采用多种格式,例如:12:55 AM、12:55:33。 Merlyn - 不幸的是,它使用现有数据,而不是基于用户输入。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# string parsing datetime time