using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; namespace Shentun.WebPeis { public class DataHelper { /// /// string转timeonly /// /// /// public static TimeOnly? ConvertStringToTimeOnly(string value) { if (string.IsNullOrWhiteSpace(value)) { return null; } else { return TimeOnly.Parse(value); } } /// /// timeonly转string /// /// /// public static string ConvertTimeOnlyToString(TimeOnly? value) { if (value == null) { return ""; } else { return value.Value.ToString("HH:mm"); } } /// /// 统一转换日期为字符串格式 /// /// /// public static string ConversionDateToString(DateTime? dateTime) { if (dateTime == null) { return ""; } else { return dateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } } /// /// 转换 只保留年月日 /// /// /// public static string ConversionDateShortToString(DateTime? dateTime) { if (dateTime == null) { return ""; } else { return dateTime.Value.ToString("yyyy-MM-dd"); } } /// /// 获取时间段的所有日期 /// /// /// /// public static List GetAllDatesWithinRange(DateTime startDate, DateTime endDate) { var dates = new List(); for (var date = startDate; date <= endDate; date = date.AddDays(1)) { dates.Add(date); } return dates; } /// /// 转换人民币大小金额 /// /// 金额 /// 返回大写形式 public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 string str3 = ""; //从原num值中取出的值 string str4 = ""; //数字的字符串形式 string str5 = ""; //人民币大写金额形式 int i; //循环变量 int j; //num的值乘以100的字符串长度 string ch1 = ""; //数字的汉语读法 string ch2 = ""; //数字位的汉字读法 int nzero = 0; //用来计算连续的零值是几个 int temp; //从原num值中取出的值 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式 j = str4.Length; //找出最高位 if (j > 15) { return "溢出"; } str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 //循环取出每一位需要转换的值 for (i = 0; i < j; i++) { str3 = str4.Substring(i, 1); //取出需转换的某一位的值 temp = Convert.ToInt32(str3); //转换为数字 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) { //当所取位数不为元、万、亿、万亿上的数字时 if (str3 == "0") { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } } } else { //该位是万亿,亿,万,元位等关键位 if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 != "0" && nzero == 0) { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 == "0" && nzero >= 3) { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (j >= 11) { ch1 = ""; nzero = nzero + 1; } else { ch1 = ""; ch2 = str2.Substring(i, 1); nzero = nzero + 1; } } } } } if (i == (j - 11) || i == (j - 3)) { //如果该位是亿位或元位,则必须写上 ch2 = str2.Substring(i, 1); } str5 = str5 + ch1 + ch2; if (i == j - 1 && str3 == "0") { //最后一位(分)为0时,加上“整” str5 = str5 + '整'; } } if (num == 0) { str5 = "零元整"; } return str5; } #region 数据检查 /// /// 数据检查 对象 /// /// 需要验证的对象 /// 字段名称 /// 异常提示后缀 /// public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 数据检查 字符串 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空") { if (string.IsNullOrWhiteSpace(value)) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } #region 验证char类型参数 /// /// 验证char类型参数是否为null /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new ArgumentException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证char类型参数是否为0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0") { if (value == '0') { throw new ArgumentException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证char类型参数是否为Y、N /// /// 需要验证的值 /// 字段名称 /// public static void CheckCharIsYOrN(char value, string parameterName) { if (value != 'Y' && value != 'N') { throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N"); } } #endregion /// /// 验证Int类型数据是否>0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值") { if (value <= 0) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证Guid数据是否为null /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckGuidIsDefaultValue(Guid value, string parameterName, string ExceptionMessage = "不能为默认值00000000-0000-0000-0000-000000000000") { if (value == Guid.Empty || value == default(Guid)) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// ///验证decimal类型数据大于0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0") { if (value <= 0) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 数据检查 decimal /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckDecimalIsNull(decimal? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } public static void CheckIdNo(string idNo) { if (string.IsNullOrWhiteSpace(idNo)) { throw new Exception("身份证号不能是空值"); } if (idNo.Length != 18) throw new Exception("身份证号长度必须为18位"); var birthDate = Convert.ToDateTime(idNo.Substring(6, 4) + "-" + idNo.Substring(10, 2) + "-" + idNo.Substring(12, 2)); if (birthDate < new DateTime(1880, 1, 1) || birthDate > DateTime.Now.Date) { throw new Exception("身份证号中的出生日期不正确"); } } #endregion } }