using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Text.RegularExpressions;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Core.Const;
|
using WIDESEAWCS_Core.Enums;
|
|
namespace WIDESEAWCS_Core.Helper
|
{
|
public static class UtilConvert
|
{
|
private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
|
|
private static long longTime = 621355968000000000;
|
|
private static int samllTime = 10000000;
|
/// <summary>
|
/// 时间戳转换成日期
|
/// </summary>
|
/// <param name="timeStamp"></param>
|
/// <returns></returns>
|
public static DateTime GetTimeSpmpToDate(this object timeStamp)
|
{
|
if (timeStamp == null) return dateStart;
|
DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
|
return dateTime;
|
}
|
|
public static string Serialize(this object obj, JsonSerializerSettings formatDate = null)
|
{
|
if (obj == null) return null;
|
formatDate = formatDate ?? new JsonSerializerSettings
|
{
|
DateFormatString = "yyyy-MM-dd HH:mm:ss"
|
};
|
return JsonConvert.SerializeObject(obj, formatDate);
|
}
|
|
public static T DeserializeObject<T>(this string json)
|
{
|
if (string.IsNullOrEmpty(json))
|
{
|
return default(T);
|
}
|
if (json == "{}")
|
{
|
json = "[]";
|
}
|
return JsonConvert.DeserializeObject<T>(json);
|
}
|
|
public static string FirstLetterToLower(this string thisValue)
|
{
|
if (string.IsNullOrEmpty(thisValue)) return string.Empty;
|
string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1);
|
return result;
|
}
|
|
public static string FirstLetterToUpper(this string thisValue)
|
{
|
if (string.IsNullOrEmpty(thisValue)) return string.Empty;
|
string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1);
|
return result;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static int ObjToInt(this object thisValue)
|
{
|
int reval = 0;
|
if (thisValue == null) return 0;
|
if (thisValue is Enum && thisValue != DBNull.Value && Enum.TryParse(thisValue.GetType(), thisValue.ToString(), out var val))
|
{
|
return Convert.ToInt32(val.ChangeType(typeof(int)));
|
}
|
if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return reval;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static int DoubleToInt(this double thisValue)
|
{
|
int reval = 0;
|
|
return Convert.ToInt32(thisValue);
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <param name="errorValue"></param>
|
/// <returns></returns>
|
public static int ObjToInt(this object thisValue, int errorValue)
|
{
|
int reval = 0;
|
if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return errorValue;
|
}
|
|
public static long ObjToLong(this object thisValue)
|
{
|
long reval = 0;
|
if (thisValue == null) return 0;
|
if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return reval;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static double ObjToMoney(this object thisValue)
|
{
|
double reval = 0;
|
if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return 0;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <param name="errorValue"></param>
|
/// <returns></returns>
|
public static double ObjToMoney(this object thisValue, double errorValue)
|
{
|
double reval = 0;
|
if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return errorValue;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static string ObjToString(this object thisValue)
|
{
|
if (thisValue != null) return thisValue.ToString().Trim();
|
return "";
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static bool IsNotEmptyOrNull(this object thisValue)
|
{
|
return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <param name="errorValue"></param>
|
/// <returns></returns>
|
public static string ObjToString(this object thisValue, string errorValue)
|
{
|
if (thisValue != null) return thisValue.ToString().Trim();
|
return errorValue;
|
}
|
|
public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static Decimal ObjToDecimal(this object thisValue)
|
{
|
Decimal reval = 0;
|
if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return 0;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <param name="errorValue"></param>
|
/// <returns></returns>
|
public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
|
{
|
Decimal reval = 0;
|
if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return errorValue;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static DateTime ObjToDate(this object thisValue)
|
{
|
DateTime reval = DateTime.MinValue;
|
if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
|
{
|
reval = Convert.ToDateTime(thisValue);
|
}
|
|
return reval;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <param name="errorValue"></param>
|
/// <returns></returns>
|
public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
|
{
|
DateTime reval = DateTime.MinValue;
|
if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return errorValue;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static bool ObjToBool(this object thisValue)
|
{
|
bool reval = false;
|
if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
|
{
|
return reval;
|
}
|
|
return reval;
|
}
|
|
|
/// <summary>
|
/// 获取当前时间的时间戳
|
/// </summary>
|
/// <param name="thisValue"></param>
|
/// <returns></returns>
|
public static string DateToTimeStamp(this DateTime thisValue)
|
{
|
TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
return Convert.ToInt64(ts.TotalSeconds).ToString();
|
}
|
|
public static object ChangeType(this object value, Type type)
|
{
|
if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
|
if (value == null) return null;
|
if (type == value.GetType()) return value;
|
if (type.IsEnum)
|
{
|
if (value is string)
|
return Enum.Parse(type, value as string);
|
else
|
return Enum.ToObject(type, value);
|
}
|
|
if (!type.IsInterface && type.IsGenericType)
|
{
|
Type innerType = type.GetGenericArguments()[0];
|
object innerValue = ChangeType(value, innerType);
|
return Activator.CreateInstance(type, new object[] { innerValue });
|
}
|
|
if (value is string && type == typeof(Guid)) return new Guid(value as string);
|
if (value is string && type == typeof(Version)) return new Version(value as string);
|
if (!(value is IConvertible)) return value;
|
return Convert.ChangeType(value, type);
|
}
|
|
public static object ChangeTypeList(this object value, Type type)
|
{
|
if (value == null) return default;
|
|
var gt = typeof(List<>).MakeGenericType(type);
|
dynamic lis = Activator.CreateInstance(gt);
|
|
var addMethod = gt.GetMethod("Add");
|
string values = value.ToString();
|
if (values != null && values.StartsWith("(") && values.EndsWith(")"))
|
{
|
string[] splits;
|
if (values.Contains("\",\""))
|
{
|
splits = values.Remove(values.Length - 2, 2)
|
.Remove(0, 2)
|
.Split("\",\"");
|
}
|
else
|
{
|
splits = values.Remove(0, 1)
|
.Remove(values.Length - 2, 1)
|
.Split(",");
|
}
|
|
foreach (var split in splits)
|
{
|
var str = split;
|
if (split.StartsWith("\"") && split.EndsWith("\""))
|
{
|
str = split.Remove(0, 1)
|
.Remove(split.Length - 2, 1);
|
}
|
|
addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
|
}
|
}
|
|
return lis;
|
}
|
|
public static string ToJson(this object value)
|
{
|
return JsonConvert.SerializeObject(value);
|
}
|
|
public static bool IsInt(this object obj)
|
{
|
if (obj == null)
|
return false;
|
bool reslut = Int32.TryParse(obj.ToString(), out int _number);
|
return reslut;
|
|
}
|
public static bool IsDate(this object str)
|
{
|
return str.IsDate(out _);
|
}
|
public static bool IsDate(this object str, out DateTime dateTime)
|
{
|
dateTime = DateTime.Now;
|
if (str == null || str.ToString() == "")
|
{
|
return false;
|
}
|
return DateTime.TryParse(str.ToString(), out dateTime);
|
}
|
|
/// <summary>
|
/// 根据传入格式判断是否为小数
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="formatString">18,5</param>
|
/// <returns></returns>
|
public static bool IsNumber(this string str, string formatString)
|
{
|
if (string.IsNullOrEmpty(str)) return false;
|
|
return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
|
}
|
|
public static bool IsGuid(this string guid)
|
{
|
Guid newId;
|
return guid.GetGuid(out newId);
|
}
|
|
public static bool GetGuid(this string guid, out Guid outId)
|
{
|
Guid emptyId = Guid.Empty;
|
return Guid.TryParse(guid, out outId);
|
}
|
|
public static LinqExpressionType GetLinqCondition(this string stringType)
|
{
|
LinqExpressionType linqExpression;
|
switch (stringType)
|
{
|
case HtmlElementType.Contains:
|
case HtmlElementType.selectlist:
|
case nameof(HtmlElementType.Contains):
|
linqExpression = LinqExpressionType.In;
|
break;
|
case HtmlElementType.ThanOrEqual:
|
case nameof(HtmlElementType.ThanOrEqual):
|
case HtmlElementType.thanorequal:
|
linqExpression = LinqExpressionType.ThanOrEqual;
|
break;
|
case HtmlElementType.LessOrEqual:
|
case nameof(HtmlElementType.LessOrEqual):
|
case HtmlElementType.lessorequal:
|
linqExpression = LinqExpressionType.LessThanOrEqual;
|
break;
|
case HtmlElementType.GT:
|
case nameof(HtmlElementType.GT):
|
linqExpression = LinqExpressionType.GreaterThan;
|
break;
|
case HtmlElementType.lt:
|
linqExpression = LinqExpressionType.LessThan;
|
break;
|
case HtmlElementType.like:
|
linqExpression = LinqExpressionType.Contains;
|
break;
|
default:
|
linqExpression = LinqExpressionType.Equal;
|
break;
|
}
|
return linqExpression;
|
}
|
}
|
}
|