using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace DG.Tool { public static class Utility { /// /// 获取随机数 /// /// /// public static string CreateRandomSatl(int codeCount) { string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z"; string[] allCharArray = allChar.Split(','); string randomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < codeCount; i++) { if (temp != -1) { rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); } int t = rand.Next(50); if (temp == t) { return CreateRandomSatl(codeCount); } temp = t; randomCode += allCharArray[t]; } return randomCode; } public static string Sha512(string value) { SHA512 s512 = new SHA512Managed(); byte[] bit_pwd = Encoding.Default.GetBytes(value); byte[] bit_shapsw = s512.ComputeHash(bit_pwd); string shapsw = Convert.ToBase64String(bit_shapsw); return shapsw; } public static int PasswordStrength(string password) { if (string.IsNullOrWhiteSpace(password)) return -1; //字符统计 int iNum = 0, iLtt = 0, iSym = 0; foreach (char c in password) { if (c >= '0' && c <= '9') iNum++; else if (c >= 'a' && c <= 'z') iLtt++; else if (c >= 'A' && c <= 'Z') iLtt++; else iSym++; } if (password.Length < 6) return 3; //长度小于6的密码 if (iLtt == 0 && iSym == 0) return 1; //纯数字密码 if (iNum == 0 && iSym == 0) return 2; //纯字母密码 return 0; //正确 } public static string GetSendMsgModel(string strJson, string modelParam) { string key = string.Empty; string values = string.Empty; strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString(); Regex regex = new Regex(@"(?<={)[^}]+(?=})"); MatchCollection mc = regex.Matches(strJson); Dictionary list = new Dictionary(); for (int i = 0; i < mc.Count; i++) { string strRow = mc[i].Value; string[] strRows = strRow.Split('*'); foreach (string str in strRows) { string[] strCell = str.Split('#'); key = strCell[0].Replace("\"", ""); values = strCell[1].Replace("\"", ""); list.Add(key, values); } } foreach (var item in list) { modelParam = modelParam.Replace("${" + item.Key + "}", item.Value); } return modelParam; } public static string DateEnToCn(string date) { string datename = ""; date = date.ToLower(); switch (date) {//--Monday 周一 Tuesday 周二 Wednesday 周三 Thursday 周四 Friday 周五 Saturday 周六 Sunday 周日 case "monday": datename = "星期一"; break; case "tuesday": datename = "星期二"; break; case "wednesday": datename = "星期三"; break; case "thursday": datename = "星期四"; break; case "friday": datename = "星期五"; break; case "saturday": datename = "星期六"; break; case "sunday": datename = "星期日"; break; } return datename; } /// /// 将c# DateTime时间格式转换为Unix时间戳格式 /// /// 时间 /// long public static long ConvertDateTimeToInt(System.DateTime time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位 return t; } /// /// 时间戳转为C#格式时间 /// /// /// public static DateTime ConvertStringToDateTime(string timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } /// /// 获取文件的MD5码 /// /// 传入的文件名(含路径及后缀名) /// public static string GetMD5HashFromFile(string fileName) { try { FileStream file = new FileStream(fileName, System.IO.FileMode.Open); MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(file); file.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } catch (Exception ex) { throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message); } } #region 秒转换小时 SecondToHour /// /// 秒转换小时 /// /// /// public static string SecondToHour(double time) { string str = ""; int hour = 0; int minute = 0; int second = 0; second = Convert.ToInt32(time); if (second > 60) { minute = second / 60; second = second % 60; } if (minute > 60) { hour = minute / 60; minute = minute % 60; } return (hour + "小时" + minute + "分钟" + second + "秒"); } #endregion /// ///时间格式化 /// /// 返回字符串的类型(默认4) ///例子: 2014/05/08 19:14:17 ///type=1 2014/05/08 没有时分秒 ///type=2 2014/05/08 19:14 没有秒 ///type=3 14/05/08 19:14 没有年前两位和秒 ///type=4 05/08 19:14 没有年和秒 /// /// public static string ToUnityString(this DateTime dt, int type = 4) { if (dt == DateTime.MinValue) return ""; string formartStr = string.Empty; switch (type) { case 1: formartStr = "yyyy/MM/dd"; break; case 2: formartStr = "yyyy/MM/dd HH:mm"; break; case 3: formartStr = "yy/MM/dd HH:mm"; break; case 4: formartStr = "MM/dd HH:mm"; break; case 5: formartStr = "yyyyMM"; break; case 6: formartStr = "yyyy-MM-dd"; break; case 7: formartStr = "yyyy-MM-dd HH:mm:ss"; break; } return dt.ToString(formartStr); } /// ///时间格式化 /// /// 返回字符串的类型(默认4) ///例子: 2014/05/08 19:14:17 ///type=1 2014/05/08 没有时分秒 ///type=2 2014/05/08 19:14 没有秒 ///type=3 14/05/08 19:14 没有年前两位和秒 ///type=4 05/08 19:14 没有年和秒 /// /// public static string ToUnityString(this DateTime? dt, int type = 4) { if (dt == null || dt.Value == DateTime.MinValue) return ""; string formartStr = string.Empty; switch (type) { case 1: formartStr = "yyyy/MM/dd"; break; case 2: formartStr = "yyyy/MM/dd HH:mm"; break; case 3: formartStr = "yy/MM/dd HH:mm"; break; case 4: formartStr = "MM/dd HH:mm"; break; case 5: formartStr = "yyyyMM"; break; case 6: formartStr = "yyyy-MM-dd"; break; } return dt.Value.ToString(formartStr); } } }