255 lines
9.1 KiB
C#
255 lines
9.1 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 获取随机数
|
|
/// </summary>
|
|
/// <param name="codeCount"></param>
|
|
/// <returns></returns>
|
|
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<string, string> list = new Dictionary<string, string>();
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 将c# DateTime时间格式转换为Unix时间戳格式
|
|
/// </summary>
|
|
/// <param name="time">时间</param>
|
|
/// <returns>long</returns>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 时间戳转为C#格式时间
|
|
/// </summary>
|
|
/// <param name="timeStamp"></param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取文件的MD5码
|
|
/// </summary>
|
|
/// <param name="fileName">传入的文件名(含路径及后缀名)</param>
|
|
/// <returns></returns>
|
|
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
|
|
/// <summary>
|
|
/// 秒转换小时
|
|
/// </summary>
|
|
/// <param name="time"></param>
|
|
/// <returns></returns>
|
|
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
|
|
|
|
/// <summary>
|
|
///时间格式化
|
|
/// </summary>
|
|
/// <param name="dt">返回字符串的类型(默认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 没有年和秒
|
|
/// </param>
|
|
/// <returns></returns>
|
|
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);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
///时间格式化
|
|
/// </summary>
|
|
/// <param name="dt">返回字符串的类型(默认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 没有年和秒
|
|
/// </param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
}
|
|
}
|