检查日期时间字符串是否包含时间我遇到了一个问题。我从数据库中获取日期时间字符串,其中一些不包含时间。但是对于新的要求,每个日期时间字符串应该包含这样的时间,1)1980/10/1112:00:012)2010/APRIL/0217:10:003)10/02/1003:30:34日期可以是任何格式,后跟24小时制时间。我试图通过以下代码检测时间的存在,stringtimestamp_string="2013/04/0817:30";DateTime时间戳=Convert.ToDateTime(timestamp_string);字符串时间=“”;如果(timestamp_string.Length>10){time=timestamp.ToString("hh:mm");}else{time="未注册时间";}MessageBox.Show(时间);但这仅适用于1)类型时间戳。我可以知道如何完成此任务,如何检测此日期时间字符串中是否存在时间元素。非常感谢:)可能的匹配项如何验证“日期和时间”字符串是否只有时间?信息ArunSelvaKumar、GuruKara、PatipolParipoonnanonda提供的三个答案是正确的,请检查时间并为我服务。但我选择GuruKara的答案完全取决于易用性和他给出的解释。非常感谢:)非常感谢大家:)日期时间组件TimeOfDay是您所需要的。MSDN说:“与Date属性不同,它返回一个DateTime值,表示没有时间分量的日期,TimeOfDay属性返回一个TimeSpan值,表示带有时间分量的DateTime值。”这是一个考虑所有场景的示例。由于您确定可以使用DateTime.Parse的格式,请使用DateTime.TryParsevardateTime1=System.DateTime.Parse("1980/10/1112:00:00");vardateTime2=System.DateTime.Parse("2010/APRIL/0217:10:00");vardateTime3=System.DateTime.Parse("10/02/1003:30:34");vardateTime4=System.DateTime.Parse("02/20/10");if(dateTime1.TimeOfDay.TotalSeconds==0){Console.WriteLine("1980/10/1112:00:00-没有时间");}else{Console.WriteLine("1980/10/1112:00:00-有时间");}if(dateTime2.TimeOfDay.TotalSeconds==0){Console.WriteLine("2010/APRIL/0217:10:00-没有时间");}else{Console.WriteLine("2010/APRIL/0217:10:00-有时间");}if(dateTime3.TimeOfDay.TotalSeconds==0){Console.WriteLine("10/02/1003:30:34-没有时间");}else{Console.WriteLine("10/02/1003:30:34-有时间");}if(dateTime4.TimeOfDay.TotalSeconds==0){Console.WriteLine("02/20/10-没有时间");}else{Console.WriteLine("02/20/10-有时间");}试试这个,DateTimemyDate;if(DateTime.TryParseExact(inputString,"dd-MM-yyyyhh:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None,outmyDate)){//StringhasDateandTime}else{//String只有Date部分}您可以尝试使用此处列出的其他格式说明符,http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx将GuruKara和PatipolParipoonnanonda的答案与.net全球化API,你可以得到:boolHasExplicitTime(DateTimeparsedTimestamp,stringstr_timestamp){string[]dateTimeSeparators={"T","","@"};字符串[]timeSeparators={CultureInfo.CurrentUICulture.DateTimeFormat。TimeSeparator,CultureInfo.CurrentCulture.DateTimeFormat.TimeSeparator,":"};如果(parsedTimestamp.TimeOfDay.TotalSeconds!=0)返回真;string[]dateOrTimeParts=str_timestamp.Split(dateTimeSeparators,StringSplitOptions.RemoveEmptyEntriesOrTime);tsbooldateAny(part=>part.Split(timeSeparators,StringSplitOptions.RemoveEmptyEntries).Length>1);返回hasTimePart;}这个方法:限制:这个这就是我现在要做的。它可能并不完美,但它可能比考虑任何凌晨12点的约会时间要好,因为没有时间。前提是,如果我在最后添加一个完整的时间规范,它会解析它是否只是一个日期,但如果它已经有一个时间组件就会失败。我必须假设不存在包含7个或更少非空白字符的有效日期/时间。似乎“1980/10”解析,但不是“1980/1001:01:01.001”。我已经包含了各种测试用例。随意添加你自己的,如果他们失败了请告诉我。publicstaticboolIsValidDateTime(thisstringdateString,boolrequireTime=false){DateTimeoutDate;if(!DateTime.TryParse(dateString,outoutDate))返回false;如果(!requireTime)返回真;else{returnRegex.Replace(dateString,@"s","").Length>7&&!DateTime.TryParse(dateString+"01:01:01.001",outoutDate);}}publicvoidDateTest(){varwithTimes=new[]{“1980/10/1101:01:01.001”,“02/01/198001:01:01.001”,“1980-01-0101:01:01.001,"1980/10/1100:00","1980/10/111pm","1980-01-0100:00:00"};//确保我们有时间的通过两个测试Assert.IsTrue(date.IsValidDateTime(true),String.Format("date:{0}确实有时间。",date));}varwithoutTimes=new[]{“1980/10/11”,“1980/10”,“1980/10”,“10/1980”,“198001”,“1980/10/11”,“02/01/1980","1980-01-01"};//确保我们没有时间的通过f首先,第二个失败foreach(vardateinwithoutTimes){Assert.IsTrue(date.IsValidDateTime(),String.Format("date:{0}isn'tvalid.",date));Assert.IsFalse(date.IsValidDateTime(true),String.Format("date:{0}没有时间。",date));}varbogusTimes=new[]{"1980","198001:01","8001:01","1980T01","80T01:01","1980-01-01T01",};//确保我们没有时间的那些第一次通过而第二次失败foreach(vardateinbogusTimes){DateTimeparsedDate;DateTime.TryParse(date,outparsedDate);Assert.IsFalse(date.IsValidDateTime(),String.Format("日期:{0}有效。{1}",date,parsedDate));Assert.IsFalse(date.IsValidDateTime(true),String.Format("date:{0}isvalid.{1}",date,parsedDate));}}日期和时间开始最终使用空格键分隔最简单的方法是:if(timestamp_string.Split('').Length==2){//timestamp_string有日期和时间}else{//timestamp_string只有日期}这个代号假期开始永远存在。如果你想更进一步(如果日期不存在),你可以这样做:if(timestamp_string.Split('').Select(item=>item.Split(':').Length>1)。Any(item=>item)){//这适用于任何包含日期的字符串格式,例如://2012/APRIL/0312:00:05->这适用于//2013/04/0509:00:01->这可行//08:50:452013/01/01->这也可行//08:50:50->这也可行}else{//timestamp_string中没有日期完全}希望这能有所帮助!以上就是C#学习教程:检查日期时间字符串是否包含分时的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
