Example #1
0
    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"));
        }
    }
Example #2
0
    /// <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);
        }
    }