public string GetDateTimeStr(string _needDealStr, string regexStr = "") { DateTime tempDate = DateTime.Now; //进行时间语意提前读取 if (DateTimeAdvance(ref tempDate, _needDealStr)) { return(tempDate.ToString("yyyy-MM-dd HH:mm:ss")); } var result = PickUpDateTimeStr(_needDealStr, regexStr); var needDefaultTime = false;//是否需要默认延迟 if (!string.IsNullOrEmpty(result)) { if (!DateTime.TryParse(result, out tempDate)) { tempDate = DateTime.Now; needDefaultTime = true; } } else { tempDate = DateTime.Now; needDefaultTime = true; } if (needDefaultTime) { var curDate = DateTime.Now.AddHours(1);//默认一个小时 var hitObjListCount = ChineseTimeClsDic.Where(c => _needDealStr.Contains(c.name)).Count(); if (hitObjListCount > 0) { return(string.Format("{0} {1}", curDate.ToString("yyyy-MM-dd"), ChineseTimeFix(_needDealStr))); } else { return(string.Format("{0} {1}", curDate.ToString("yyyy-MM-dd"), ChineseTimeFix(_needDealStr, curDate))); } } else { return(tempDate.ToString("yyyy-MM-dd HH:mm:ss")); } }
/// <summary> /// 获取用于提醒的时间,即时间一般都要往后延迟而非往前 /// </summary> /// <param name="_needDealStr"></param> /// <returns></returns> public string GetDateTimeStrForAlert(string _needDealStr) { DateTime tempDate = DateTime.Now; var curDate = DateTime.Now; var hitDateStr = GetDateTimeStr(_needDealStr); if (DateTime.TryParse(hitDateStr, out tempDate)) { if (tempDate < curDate) //小于当前时间 { if ((tempDate - curDate).Days > 0) //代表日期不一致一致 { tempDate = DateTime.Parse(string.Format("{0}{1}", curDate.ToString("yyyy-MM-dd"), tempDate.ToString("HH:mm:ss"))); } var resultDate = tempDate; //在这之前保证了TempDate CurDate 日期一致但时间不一致 if (tempDate < curDate && tempDate.Hour < 12) { var hitObjCount = ChineseTimeClsDic.Where(c => _needDealStr.Contains(c.name)).Count(); if (hitObjCount > 0) //此处表示经过”早上“的区域端的时间修正过后,时间还是小于当前时间,这表示需要延后到明天 { tempDate = tempDate.AddDays(1); //如下午的时候说早上6点 } else { tempDate = tempDate.AddHours(12);//尝试改成下午,因为可能语意中忘了提醒下午4点,二十直接下午四点 } } if (tempDate < curDate) //改了时间,也还是小与当前时间 { resultDate = resultDate.AddDays(1); //修改+12小时前的时间 return(resultDate.ToString("yyyy-MM-dd HH:mm:ss")); } } return(tempDate.ToString("yyyy-MM-dd HH:mm:ss")); } else { return(string.Empty); } }