using System; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace CP.Common { /// <summary> /// 数据转换类 /// </summary> public class TypeConverter { /// <summary> /// 短期数 /// </summary> /// <param name="qi"></param> /// <returns></returns> public static string GetShortQi(string qi) { if (string.IsNullOrEmpty(qi)) return ""; if (qi.Trim().Length >= 7) { return qi.Substring(4, 3); } return ""; } public static DateTime IntToDateTime(int d) { /* DateTime time = DateTime.MinValue; DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); time = startTime.AddSeconds(d); return time; */ DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } /// <summary> /// datetime转化为长整形 /// </summary> /// <param name="time"></param> /// <returns></returns> public static int DateTimeToInt(DateTime time) { /* DateTime timeStamp = new DateTime(1970, 1, 1); int a = ObjectToInt((time.Ticks - timeStamp.Ticks) / 10000000); return a; */ if (time == null) return 0; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)((DateTime)time - startTime).TotalSeconds; } /// <summary> /// 日期格式化成Long /// </summary> /// <param name="time"></param> /// <returns></returns> public static long DateTimeToLong(DateTime time) { DateTime timeStamp = new DateTime(1970, 1, 1); long a = (DateTime.UtcNow.Ticks - timeStamp.Ticks) / 10000000; return a; } public static string SubString(string str, int len) { if (str.Length > len) { return str.Substring(0, len); } return str; } /// <summary> /// 获取单项奖金 /// </summary> /// <param name="num"></param> /// <returns></returns> public static string GetItemStr(string num) { if (string.IsNullOrWhiteSpace(num)) return "--"; var number = StrToFloat(num.Trim(), -1); if (number == -1) return "--"; if (number == 0) return "0"; var culture = (CultureInfo)CultureInfo.GetCultureInfo("zh-cn").Clone(); culture.NumberFormat.NumberGroupSizes = culture.NumberFormat.CurrencyGroupSizes = new int[] { 3 }; culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = ","; return number.ToString("N0", culture); } /// <summary> /// index页1等奖金额获取 /// </summary> /// <param name="money"></param> /// <returns></returns> public static string GetJo1Money(string money) { if (string.IsNullOrEmpty(money)) return ""; var number = StrToFloat(money, -1); if (number == -1) return "--"; if (number == 0) return ""; var culture = (CultureInfo)CultureInfo.GetCultureInfo("zh-cn").Clone(); culture.NumberFormat.NumberGroupSizes = culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 }; culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = ","; var array = number.ToString("N0", culture).ToString().Split(','); int count = array.Length; string result = string.Empty; //text-20 text-blue //亿以上 if (count == 3) { //10亿以上 if (array[0].Length > 1) { result = $"{(array[0])}.{SubString(array[1], 1)}亿"; } else { result = $"{array[0]}.{SubString(array[1], 2)}亿"; } } //亿以下 if (count == 2) { result = $"{StrToInt(array[0])}万"; } if (count == 1) { result = $"{StrToInt(array[0])}"; } return result; } /// <summary> /// 获取金额 /// </summary> /// <param name="money"></param> /// <param name="style"></param> /// <returns></returns> public static string GetNoFormatMoney(string money) { if (string.IsNullOrEmpty(money)) return ""; var number = StrToFloat(money, -1); if (number == -1) return "--"; if (number == 0) return "0"; var culture = (CultureInfo)CultureInfo.GetCultureInfo("zh-cn").Clone(); culture.NumberFormat.NumberGroupSizes = culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 }; culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = ","; var array = number.ToString("N0", culture).ToString().Split(','); int count = array.Length; string result = string.Empty; //text-20 text-blue //亿以上 if (count == 3) { //10亿以上 if (array[0].Length > 1) { result = $"{(array[0])}.{SubString(array[1], 1)}亿"; } else { result = $"{array[0]}.{SubString(array[1], 2)}亿"; } } //亿以下 if (count == 2) { result = $"{StrToInt(array[0])}万"; } if (count == 1) { result = $"{StrToInt(array[0])}"; } return result; } /// <summary> /// 获取金额 /// </summary> /// <param name="money"></param> /// <param name="style"></param> /// <returns></returns> public static string GetMoney(string money, string style = "") { var number = StrToFloat(money, -1); if (number == -1) return "--"; if (number == 0) return "0"; var culture = (CultureInfo)CultureInfo.GetCultureInfo("zh-cn").Clone(); culture.NumberFormat.NumberGroupSizes = culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 }; culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = ","; var array = number.ToString("N0", culture).ToString().Split(','); int count = array.Length; string result = string.Empty; //text-20 text-blue //亿以上 if (count == 3) { //10亿以上 if (array[0].Length > 1) { result = $"<b class=\"{style}\"><span class=\"text-20 {style}\">{(array[0])}</span>.{SubString(array[1], 1)}</b> 亿元"; } else { result = $"<b class=\"{style}\"><span class=\"text-20 {style}\">{array[0]}</span>.{SubString(array[1], 2)}</b> 亿元"; } } //亿以下 if (count == 2) { result = $"<b class=\"{style}\">{StrToInt(array[0])}</b> 万元"; } if (count == 1) { result = $"<b class=\"{style}\">{StrToInt(array[0])}</b> 元"; } return result; } public static string GetJcStr(string num) { //<b class="text-blue"><%=info.xlStr %> <span class="text-20 text-blue">3</span>.677</b> 亿元 var number = StrToFloat(num, -1); if (number == -1) return "--"; if (number == 0.00) return "0"; var culture = (CultureInfo)CultureInfo.GetCultureInfo("zh-cn").Clone(); culture.NumberFormat.NumberGroupSizes = culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 }; culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = ","; var array = number.ToString("N0", culture).ToString().Split(','); // return number.ToString("N0", culture).ToString(); string result = string.Empty; switch (array.Count()) { case 3: result = $"<span class=\"text-20 text-red\">{StrToInt(array[0])}</span>亿{StrToInt(array[1])}万元"; break; case 2: result = $"{StrToInt(array[0])}万元"; break; case 1: result = $"{StrToInt(array[0])}元"; break; default: return "--"; } return result; } /// <summary> /// string型转换为bool型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的bool类型结果</returns> public static bool StrToBool(object expression, bool defValue) { if (expression != null) return StrToBool(expression, defValue); return defValue; } /// <summary> /// string型转换为bool型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的bool类型结果</returns> public static bool StrToBool(string expression, bool defValue) { if (expression != null) { if (string.Compare(expression, "true", true) == 0) return true; else if (string.Compare(expression, "false", true) == 0) return false; } return defValue; } /// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int ObjectToInt(object expression) { return ObjectToInt(expression, 0); } /// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int ObjectToInt(object expression, int defValue) { if (expression != null) return StrToInt(expression.ToString(), defValue); return defValue; } /// <summary> /// 将对象转换为Int32类型,转换失败返回0 /// </summary> /// <param name="str">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static int StrToInt(string str) { return StrToInt(str, 0); } /// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int StrToInt(string str, int defValue) { if (string.IsNullOrEmpty(str) || str.Trim().Length >= 11 || !Regex.IsMatch(str.Trim(), @"^([-]|[0-9])[0-9]*(\.\w*)?$")) return defValue; int rv; if (Int32.TryParse(str, out rv)) return rv; return Convert.ToInt32(StrToFloat(str, defValue)); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(object strValue, float defValue) { if ((strValue == null)) return defValue; return StrToFloat(strValue.ToString(), defValue); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float ObjectToFloat(object strValue, float defValue) { if ((strValue == null)) return defValue; return StrToFloat(strValue.ToString(), defValue); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float ObjectToFloat(object strValue) { return ObjectToFloat(strValue.ToString(), 0); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(string strValue) { if ((strValue == null)) return 0; return StrToFloat(strValue.ToString(), 0); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(string strValue, float defValue) { if ((strValue == null) || (strValue.Length > 10)) return defValue; float intValue = defValue; if (strValue != null) { bool IsFloat = Regex.IsMatch(strValue, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); if (IsFloat) float.TryParse(strValue, out intValue); } return intValue; } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static DateTime StrToDateTime(string str, DateTime defValue) { if (!string.IsNullOrEmpty(str)) { DateTime dateTime; if (DateTime.TryParse(str, out dateTime)) return dateTime; } return defValue; } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static DateTime StrToDateTime(string str) { return StrToDateTime(str, DateTime.Now); } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="obj">要转换的对象</param> /// <returns>转换后的int类型结果</returns> public static DateTime ObjectToDateTime(object obj) { return ObjectToDateTime(obj, DateTime.Now); } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="obj">要转换的对象</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static DateTime ObjectToDateTime(object obj, DateTime defValue) { if (obj == null) return defValue; return StrToDateTime(obj.ToString(), defValue); } /// <summary> /// 字符串转成整型数组 /// </summary> /// <param name="idList">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static int[] StringToIntArray(string idList) { return StringToIntArray(idList, -1); } /// <summary> /// 字符串转成整型数组 /// </summary> /// <param name="idList">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int[] StringToIntArray(string idList, int defValue) { if (string.IsNullOrEmpty(idList)) return null; string[] strArr = Utils.SplitString(idList, ","); int[] intArr = new int[strArr.Length]; for (int i = 0; i < strArr.Length; i++) intArr[i] = StrToInt(strArr[i], defValue); return intArr; } } }