using System; using System.Data; using System.Linq; using System.Reflection; using System.Web; namespace GSYWApi { /// /// 通用方法帮助类 /// public class CommonHelper { #region 方法 -> 将DateTime类型转换为long类型 /// /// 将DateTime类型转换为long类型 /// /// 时间 /// public static long ConvertDataTimeLong(DateTime dt) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); TimeSpan toNow = dt.Subtract(dtStart); long timeStamp = toNow.Ticks; timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 7)); return timeStamp; } #endregion #region 方法 -> 将Long类型转换为DateTime类型 /// /// 将Long类型转换为DateTime类型 /// /// long /// s public static DateTime ConvertLongDateTime(long d) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } /// /// 时间戳(毫秒值)String转换为DateTime类型转换 /// /// 毫秒时间戳 /// public static DateTime TicksToDate(string time) { return new DateTime((Convert.ToInt64(time) * 10000) + 621355968000000000); } #endregion #region 方法 -> 枚举参数过滤处理 /// /// 枚举参数过滤处理,解决麻烦的SQL拼接 /// (对照数据表给定添加、更新的参数枚举类型ValueType) /// /// 数据类型 /// 数据值 /// public static string IsArrayType(ValueType _Type, object _String = null) { if (_String != null && _String.ToString() != "") { switch (_Type) { case ValueType.String: return string.Format("'{0}'", _String.ToString().Replace("'", " ")); case ValueType.Int: case ValueType.Double: case ValueType.Boolean: return _String.ToString(); case ValueType.DateTime: return string.Format("TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", _String); } } return "null"; } /// /// 枚举参数过滤处理,解决麻烦的SQL拼接 /// (对照数据表给定添加、更新的参数枚举类型ValueType) /// /// 数据类型 /// 是否使用缺省值 /// private static string IsArrayType(ValueType _Type, bool _DefaultValue = false) { if (_DefaultValue) { switch (_Type) { case ValueType.String: return "''"; case ValueType.Int: case ValueType.Double: case ValueType.Boolean: return "0"; case ValueType.DateTime: return string.Format("TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", DateTime.Now.ToString()); } } return "null"; } #endregion #region 方法 -> 定义5个类型的枚举 /// /// 定义5个类型的枚举 /// public enum ValueType { /// /// 字符串 /// String = 0, /// /// 整型 /// Int = 1, /// /// 双精度 /// Double = 2, /// /// true或false /// Boolean = 3, /// /// 日期 /// DateTime = 4 } #endregion #region 方法 -> SQL语句分页 /// /// SQL语句分页 /// /// SQL语句 /// 开始的行号 /// 结束的行号 /// public static string GetPageSql(string sql, int? rn = null, int? rowNum = null) { if (rn != null && rowNum != null) { //分页查询 sql = string.Format(@" SELECT * FROM ( SELECT ROWNUM RN,N.* FROM ({0}) N WHERE ROWNUM<={1} ) M WHERE M.RN>={2}", sql, rowNum, rn); } return sql; } #endregion #region 方法 -> 为属性赋值 /// /// 为属性赋值 /// /// 源单类 /// 需要转换的实体类 /// /// public static S EntityConvert(T source) { S target = Activator.CreateInstance(); var sType = source.GetType(); var dType = typeof(S); foreach (PropertyInfo now in sType.GetProperties()) { var name = dType.GetProperty(now.Name); if (name == null) continue; dType.GetProperty(now.Name).SetValue(target, now.GetValue(source)); } return target; } #endregion #region 方法 -> 获取指定页码Datatable数据 /// /// 获取指定页码Datatable数据 /// /// 源数据 /// 返回第几页数据 /// 每页返回的数量 /// Datatable数据格式 public static DataTable GetDataTableWithPageSize(DataTable dtOrigin, int pageSize, int pageIndex) { if (pageSize == 0) { pageSize = 10; } if (pageIndex == 0) { pageIndex = 1; } //克隆数据源 DataTable dtClone = dtOrigin.Clone(); dtClone.Columns.Add("RN", typeof(int)); //开始插入数据源 for (int RowCount = 0; RowCount < pageSize; RowCount++) { //获取当前数据源行数 int RN = pageSize * (pageIndex - 1) + RowCount; //如果行数大于数据源实际数量,则直接跳过 if (RN >= dtOrigin.Rows.Count) { break; } //获取当前数据源内容 DataRow EndAccountDataRow = dtOrigin.Rows[RN]; //创建一个新 System.Data.DataRow 具有与表相同的架构 DataRow _DataRow = dtClone.NewRow(); //开始插入数据 for (int ColumnsCount = 0; ColumnsCount < dtOrigin.Columns.Count; ColumnsCount++) { _DataRow[ColumnsCount] = EndAccountDataRow[ColumnsCount]; } _DataRow["RN"] = RN + 1; //将数据加入到克隆的DataTable中 dtClone.Rows.Add(_DataRow); } return dtClone; } #endregion } }