public static string GetRangeDateEndDate(string orgString, DateTime BaseDate, string format = "yyyy-MM-dd") { orgString = orgString.Replace(" ", ""); orgString = orgString.Trim().Replace(",", String.Empty); //XXXX年XX月XX日 - XXXX年XX月XX日 var NumberList = RegularTool.GetNumberList(orgString); if (NumberList.Count == 6) { String Year = NumberList[3]; String Month = NumberList[4]; String Day = NumberList[5]; int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } //XXXX年XX月XX日 - XX月XX日 if (NumberList.Count == 5) { if (orgString.IndexOf("年") != -1 && orgString.IndexOf("月") != -1 && orgString.IndexOf("日") != -1) { String Year = NumberList[0]; String Month = NumberList[3]; String Day = NumberList[4]; int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } } //XXXX年XX月XX日 - XX日 if (NumberList.Count == 4) { if (orgString.IndexOf("年") != -1 && orgString.IndexOf("月") != -1 && orgString.IndexOf("日") != -1) { String Year = NumberList[0]; String Month = NumberList[1]; String Day = NumberList[3]; int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } } //XX月XX日 if (NumberList.Count == 2) { if (orgString.IndexOf("月") != -1 && orgString.IndexOf("日") != -1) { if (BaseDate.Year == 0) { return(orgString); } String Month = NumberList[0]; String Day = NumberList[1]; int month; int day; if (int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(BaseDate.Year, month, day); return(d.ToString(format)); } } if (orgString.IndexOf("年") != -1 && orgString.IndexOf("月") != -1) { /* * 数据主要应用于“股东增减持”类型公告的抽取,对于“变动截止日期”字段,存在少量公告中只公布了月份,未公布具体的日期。对这种情况的处理标准为: * 如果该月份在公告发布月份的前面,变动截止日期为该月份最后1个交易日; * 如果该月份是公告发布的月份,变动截止日期为公告发布日期(见本次更新表格); */ String Year = NumberList[0]; String Month = NumberList[1]; int year; int month; if (int.TryParse(Year, out year) && int.TryParse(Month, out month)) { //获得公告时间 if (year == BaseDate.Year && month == BaseDate.Month) { return(BaseDate.ToString(format)); } var d = DateUtility.GetWorkDay(year, month, -1); return(d.ToString(format)); } } if (orgString.IndexOf("月") != -1) { String Year = NumberList[0]; if (Year.Length != 4) { return(orgString); } String Month = NumberList[1]; int year; int month; if (int.TryParse(Year, out year) && int.TryParse(Month, out month)) { var d = DateUtility.GetWorkDay(year, month, -1); return(d.ToString(format)); } } } //XXXX年XX月XX日 if (orgString.Contains("年") && orgString.Contains("月") && orgString.Contains("月")) { String Year = Utility.GetStringBefore(orgString, "年"); String Month = RegularTool.GetValueBetweenString(orgString, "年", "月"); String Day = Utility.GetStringAfter(orgString, "月").Replace("日", String.Empty); int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } if (RegularTool.IsInt(orgString)) { if (orgString.Length == 8) { String Year = orgString.Substring(0, 4); String Month = orgString.Substring(4, 2); String Day = orgString.Substring(6, 2); int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { if (year < 1900 || year > 2100) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } } } var SplitChar = new string[] { "/", ".", "-" }; foreach (var sc in SplitChar) { var SplitArray = orgString.Split(sc); if (SplitArray.Length == 3) { String Year = SplitArray[0]; String Month = SplitArray[1]; String Day = SplitArray[2]; int year; int month; int day; if (int.TryParse(Year, out year) && int.TryParse(Month, out month) && int.TryParse(Day, out day)) { var d = DateUtility.GetWorkDay(year, month, day); return(d.ToString(format)); } } } return(orgString); }