using System; using System.Security.Cryptography; using System.Text; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; using System.Text.Unicode; namespace SimApi.Helpers; public static class SimApiUtil { /// /// 当前CST时间 /// public static DateTime CstNow => DateTime.UtcNow.AddHours(8); /// /// JSON序列化常规选项 /// public static JsonSerializerOptions JsonOption => new() { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }; /// /// 当前秒级时间戳 /// public static double TimestampNow => (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds; /// /// 检测手机号是否正确 /// /// 手机号码 /// public static bool CheckCell(string cell) { var regex = new Regex("^1[3456789]\\d{9}$"); return regex.IsMatch(cell); } /// /// MD5加密字符串 /// /// 源字符串 /// 加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位 /// public static string Md5(string source, string mode = "x2") { var sor = Encoding.UTF8.GetBytes(source); var md5 = MD5.Create(); var result = md5.ComputeHash(sor); var strbul = new StringBuilder(40); foreach (var t in result) { strbul.Append(t.ToString(mode)); } return strbul.ToString(); } /// /// 将对象序列化成JSON (控制台输出中文不会被编码) /// /// /// public static string Json(object obj) { return JsonSerializer.Serialize(obj, JsonOption); } }