#region using System; using System.Globalization; #endregion namespace CSFrameworkV5.Common { /// /// 数据转换器, 实际封装.Net的Convert对象. /// public class ConvertEx { /// /// 截取左侧指定长度字符串 /// /// 字符串 /// 长度 /// public static string StrLeft(string content, int length) { if (string.IsNullOrEmpty(content)) return ""; if (content.Length <= length) return content; return content.Substring(0, length); } /// /// 转换为Boolean类型 /// /// 必须是可转换为Boolean类型的字符串如"True","False",或其它特殊对象 /// 返回bool类型 public static bool ToBoolean(object o) { if (null == o) return false; try { return Convert.ToBoolean(o.ToStringEx()); } catch { return false; } } /// /// 将日期转换为日/月/年 时:分:秒(DD/MM/YYYY HH:MM:SS)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharDD_MM_YYYY_HHMMSS(DateTime dt) { return dt.ToString("dd/MM/yyyy HH:mm:ss", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年(YY)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYY(DateTime dt) { return dt.ToString("yy", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月(YYMM)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYMM(DateTime dt) { return dt.ToString("yyMM", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月日(YYMMDD)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYMMDD(DateTime dt) { return dt.ToString("yyMMdd", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年(YYYY)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYY(DateTime dt) { return dt.ToString("yyyy", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年/月/日 时:分:秒(YYYY/MM/DD HH:MM:SS)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYY_MM_DD_HHMMSS(DateTime dt) { return dt.ToString("yyyy/MM/dd HH:mm:ss", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月(YYYYMM)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYYMM(DateTime dt) { return dt.ToString("yyyyMM", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月日(YYYYMMDD)格式的字符串,当日期为系统最小日期否返回空字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYYMMDD(DateTime dt) { var temp = dt.ToString("yyyyMMdd", DateTimeFormatInfo.CurrentInfo); if (temp == "00010101") temp = ""; return temp; } public static string ToCharYYYYMMDDHHMM(DateTime dt) { return dt.ToString("yyyyMMddHHmm", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月日时分秒(YYYYMMDDHHMMSS)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYYMMDDHHMMSS(DateTime dt) { return dt.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年月日 时:分:秒(YYYYMMDD HH:MM:SS)格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYYMMDDHHMMSS000(DateTime dt) { return dt.ToString("yyyyMMdd HH:mm:ss:000", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为年/月/日格式的字符串 /// /// 日期 /// 返回字符串类型 public static string ToCharYYYYMMDDLong(DateTime dt) { return dt.ToString("yyyy/MM/dd", DateTimeFormatInfo.CurrentInfo); } /// /// 将日期转换为指定格式的字符串 /// /// 日期 /// 日期格式, 如: yyyy-MM-dd /// 返回字符串类型 public static string ToDateString(DateTime dt, string format) { return dt.ToString(format, DateTimeFormatInfo.CurrentInfo); } /// /// 转换为日期对象 /// /// 日期对象(泛型),如为空的字段数据DBNull.NULL /// public static DateTime ToDateTime(DateTime? o) { if (null == o) return DateTime.MinValue; try { return DateTime.Parse(o.ToStringEx()); } catch { return DateTime.MinValue; } } /// /// 转换为日期对象 /// /// /// public static DateTime? ToDateTime(object o) { if (null == o) return null; try { return Convert.ToDateTime(o.ToStringEx()); } catch { return null; } } public static DateTime ToDateTimeEx(object o) { if (null == o) return DateTime.MinValue; try { var dt = Convert.ToDateTime(o.ToStringEx()); if (dt < DateTime.Parse("1900-01-01")) return DateTime.Parse("1900-01-01"); return dt; } catch { return DateTime.MinValue; } } /// /// 转换日期字符串. 对象为空则返回'null'字符串(无单引号). /// 用于动态组合SQL字符串. /// /// 日期对象 /// 日期格式 /// 返回的日期字符串是否打上单引号 public static string ToDateTimeString(object o, string dateFormat, bool quotationMark) { try { var dateGenType = ToDateTime(o); var datestr = string.Empty; if (dateGenType == null) return ""; var dt = DateTime.Parse(dateGenType.ToStringEx()); datestr = dt.ToString(dateFormat, DateTimeFormatInfo.CurrentInfo); if (quotationMark) return "'" + datestr + "'"; return datestr; } catch { return ""; } } /// /// 转换为decimal类型(有效十进制数) /// /// /// public static decimal ToDecimal(object o) { if (null == o) return 0; try { return Convert.ToDecimal(o.ToStringEx()); } catch { return 0; } } /// /// 四舍五入 /// /// /// public static object ToDecimalFormat(decimal d) { return decimal.Round(d, Globals.DEF_DECIMAL_ROUND) .ToString(Globals.DEF_DECIMAL_FORMAT); } /// /// 转换为浮点类型 /// /// /// public static float ToFloat(object o) { if (null == o) return 0; try { return (float)Convert.ToDouble(o.ToStringEx()); } catch { return 0; } } /// /// 转换为整数 /// /// /// public static int ToInt(object o) { if (null == o) return 0; try { return Convert.ToInt32(o.ToStringEx()); } catch { return 0; } } /// /// 转换为SQL支持的日期格式, 日期范围:1753-1-1 ~ 9999-12-31 /// /// /// public static DateTime ToSqlDateTime(object o) { var defMinValue = DateTime.Parse("1753-01-01 00:00:00"); var defMaxValue = DateTime.Parse("9999-12-31 23:59:59"); if (null == o) return defMinValue; //传入空值,返回预设值 DateTime dt; if (DateTime.TryParse(o.ToStringEx(), out dt)) { if (dt < defMinValue || dt > defMaxValue) return defMinValue; //无效日期,预设返回SQL支持的最小日期 return dt; } return defMinValue; } /// /// 转换为字符串 /// /// 当对象为空,返回string.Empty /// public static string ToString(object obj) { if (obj == null) return string.Empty; return obj.ToStringEx().Trim(); } } }