ConvertHelper

来源:互联网 发布:github java 项目 编辑:程序博客网 时间:2024/06/16 06:07
using System;


namespace Helper
{
    /// <summary>
    /// 转换帮助类
    /// </summary>
    public class ConvertHelper
    {
        /// <summary>
        /// 转换为32位整数,转换失败为0
        /// </summary>
        /// <param name="obj">要转换的对象</param>
        /// <param name="num">整数</param>
        /// <returns>转换是否成功</returns>
        public static bool Try2Int32(object obj, out int num)
        {
            var convertible = obj as IConvertible;


            if (convertible == null || obj is DBNull)
            {
                num = 0;
                return false;
            }


            if (obj is string)
            {
                return int.TryParse((string)obj, out num);
            }


            try
            {
                num = convertible.ToInt32(null);
                return true;
            }
            catch
            {
                num = 0;
                return false;
            }
        }


        public static int ConvertToInt32(object obj) //与ToInt32有何区别?
        {
            int n;
            Try2Int32(obj, out n);
            return n;
        }


        public static bool Try2Int64(object obj, out long num)
        {
            var convertible = obj as IConvertible;


            if (convertible == null || obj is DBNull)
            {
                num = 0;
                return false;
            }


            if (obj is string)
            {
                return long.TryParse((string)obj, out num);
            }


            try
            {
                num = convertible.ToInt64(null);
                return true;
            }
            catch
            {
                num = 0;
                return false;
            }
        }


        /// <summary>
        /// 转换为货币浮点数,转换失败为0
        /// </summary>
        /// <param name="obj">要转换的对象</param>
        /// <param name="num">货币浮点数</param>
        /// <returns>转换是否成功</returns>
        public static bool Try2Decimal(object obj, out decimal num)
        {
            var convertible = obj as IConvertible;


            if (convertible == null || obj is DBNull)
            {
                num = 0;
                return false;
            }


            if (obj is string)
            {
                return decimal.TryParse((string)obj, out num);
            }


            try
            {
                num = convertible.ToDecimal(null);
                return true;
            }
            catch
            {
                num = 0;
                return false;
            }
        }


        /// <summary>
        /// 转换为64位浮点数,转换失败为0
        /// </summary>
        /// <param name="obj">要转换的对象</param>
        /// <param name="num">货币浮点数</param>
        /// <returns>转换是否成功</returns>
        public static bool Try2Double(object obj, out double num)
        {
            var convertible = obj as IConvertible;


            if (convertible == null || obj is DBNull)
            {
                num = 0;
                return false;
            }


            if (obj is string)
            {
                return double.TryParse((string)obj, out num);
            }


            try
            {
                num = convertible.ToDouble(null);
                return true;
            }
            catch
            {
                num = 0;
                return false;
            }
        }


        /// <summary>
        /// 转换为日期,转换失败为0
        /// </summary>
        /// <param name="obj">要转换的对象</param>
        /// <param name="date">日期</param>
        /// <returns>转换是否成功</returns>
        public static bool Try2DateTime(object obj, out DateTime date)
        {
            try
            {
                date = Convert.ToDateTime(obj);
                return true;
            }
            catch
            {
                date = new DateTime(-1);
                return false;
            }
        }


        /// <summary>
        /// 转换bool类型为int32类型
        /// </summary>
        /// <param name="bVar">bool变量</param>
        /// <returns>int32变量</returns>
        public static int Bool2Int(bool bVar)
        {
            return bVar ? 1 : 0;
        }


        /// <summary>
        /// 转换为货币浮点数,转换失败为0
        /// </summary>
        /// <param name="num">要转换的对象</param>
        /// <returns></returns>
        public static decimal ToDecimal(object num)
        {
            decimal n;
            Try2Decimal(num, out n);
            return n;
        }


        /// <summary>
        /// 转换为64位浮点数,转换失败为0
        /// </summary>
        /// <param name="num">要转换的对象</param>
        /// <returns></returns>
        public static double ToDouble(object num)
        {
            double n;
            Try2Double(num, out n);
            return n;
        }


        /// <summary>
        /// 转换为32位整数,转换失败为0
        /// </summary>
        /// <param name="num">要转换的对象</param>
        /// <returns></returns>
        public static int ToInt32(object num)
        {
            int n;
            Try2Int32(num, out n);
            return n;
        }


        public static long ToInt64(object num)
        {
            long n;
            Try2Int64(num, out n);
            return n;
        }


        public static DateTime ToDateTime(object date)
        {
            try
            {
                return Convert.ToDateTime(date);
            }
            catch
            {
                return new DateTime(0);
            }
        }


        public static bool ToBoolean(object b)
        {
            try
            {
                return Convert.ToBoolean(b);
            }
            catch
            {
                return false;
            }
        }


        public static string ToStringThenTrim(object o)
        {
            if (o == null || o == DBNull.Value)
                return "";
            return o.ToString().Trim();
        }
    }
}
0 0
原创粉丝点击