using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Reflection;
using System.Text.RegularExpressions;
namespace EC.Utils
{
public class CommonUtil
{
///
/// 返回UnixTime 单位秒
///
/// 单位秒
public static int NowUnixTime()
{
long longunixtime = DateUnit.UnixTime() / 1000;
return FormatCom.ToInt(longunixtime.ToString());
}
///
/// 将 DateTime 转换为 UnixTime 单位秒
///
///
///
public static int DateTimeToUnixTime(DateTime dateTime)
{
return (int)(dateTime - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1))).TotalSeconds;
}
///
/// 将 UnixTime 转换为 DateTime 单位秒
///
///
///
public static DateTime UnixTimeToDateTime(int time)
{
if (time < 0)
throw new ArgumentOutOfRangeException("time is out of range");
return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(time);
}
///
/// 小数字符串去零
///
///
///
public static string Trim0(string str)
{
string result = str.TrimEnd('0');
if (result.EndsWith("."))
{
result = result.Remove(result.Length - 1);
}
return result;
}
///
/// 判断车牌是否正确
///
///
///
public static bool IsSuccessPlate(string plate)
{
int len = plate.Length;
if (len == 7)
{
if (plate[0] > 127)
{//汉字
for (int i = 1; i < 7; i++)
{
if (plate[i] > 127)
{
return false;
}
}
return true;
}
}
return false;
}
/// 要舍入的字符串小数
public static decimal StrToDec(string str)
{
try
{
return !string.IsNullOrEmpty(str) ? Convert.ToDecimal(str.Trim()) : 0m;
}
catch (Exception)
{
return 0m;
}
}
///
///
///
///
///
/// # or 0
///
public static string WeightDecToStr(decimal dec, int afterLimit = 3, char patch = '#')
{
return dec.ToString("0.".PadRight(afterLimit + 2, patch));
}
/// 要舍入的字符串小数
/// 指定数字要舍入到的小数位数的值,范围从 0 到 28。
public static decimal WeightStrToDec(string str, int afterLimit = 3)
{
try
{
return Math.Round(Convert.ToDecimal(str), afterLimit);
}
catch (Exception)
{
return 0m;
}
}
public static string Reverse(string original)
{
var arr = original.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
public static bool IsNumber(string value)
{
return Regex.IsMatch(value, @"^[-+]?\d+(\.\d+)?$");
}
public static bool IsInt(string value)
{
return Regex.IsMatch(value, @"^[-+]?\d+(\.\d+)?$");
}
///
/// 在指定时间过后执行指定的表达式
///
/// 要执行的表达式
/// 时间(以毫秒为单位)
/// 返回timer对象
public static void SetTimeout(Action action, double interval)
{
var timer = new System.Timers.Timer(interval);
timer.Elapsed += (sender, e) =>
{
timer.Enabled = false;
action();
timer.Dispose();
timer.Close();
timer = null;
};
timer.Enabled = true;
}
///
/// 在指定时间周期重复执行指定的表达式
///
/// 要执行的表达式
/// 时间(以毫秒为单位)
public static void SetInterval(Action action, double interval)
{
var timer = new System.Timers.Timer(interval);
timer.Elapsed += (sender, e) => { action(); };
timer.Enabled = true;
}
///
///生成随机字符串
///
///目标字符串的长度
///是否包含数字,1=包含,默认为包含
///是否包含小写字母,1=包含,默认为包含
///是否包含大写字母,1=包含,默认为包含
///是否包含特殊字符,1=包含,默认为不包含
///指定长度的随机字符串
public static string GetRandomString(int length, bool useNum = true, bool useLow = true, bool useUpp = true, bool useSpe = true)
{
var b = new byte[4];
new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
var r = new Random(BitConverter.ToInt32(b, 0));
string s = string.Empty, str = string.Empty;
if (useNum == true) { str += "0123456789"; }
if (useLow == true) { str += "abcdefghijklmnopqrstuvwxyz"; }
if (useUpp == true) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
if (useSpe == true) { str += "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; }
for (int i = 0; i < length; i++)
{
s += str.Substring(r.Next(0, str.Length - 1), 1);
}
return s;
}
///
/// 读取JSON文件
///
public static JObject ReadFileJson(string jsonFile)
{
try
{
using (StreamReader file = File.OpenText(jsonFile))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject jObject = (JObject)JToken.ReadFrom(reader);
return jObject;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return null;
}
}
private static string workDirectory;
public static string GetWorkDirectory()
{
workDirectory = string.IsNullOrEmpty(workDirectory) ? Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) :workDirectory;
return workDirectory;
}
}
}