公共文件

 #region 计算两个日期的时间间隔
        /// 
        /// 计算两个日期的时间间隔
        /// 
        /// 第一个日期和时间
        /// 第二个日期和时间
        /// 
        public static string DateDiff(DateTime DateTime1, DateTime DateTime2)
        {
            string dateDiff = null;

            TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
            TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
            TimeSpan ts = ts1.Subtract(ts2).Duration();
            dateDiff = ts.Days.ToString() + "天"
                + ts.Hours.ToString() + "小时"
                + ts.Minutes.ToString() + "分钟"
                + ts.Seconds.ToString() + "秒"
                + ts.TotalMilliseconds.ToString() + "毫秒"
                ;

            return dateDiff;

            //说明:
            //    1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻
            //    2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值
            //    下面的列表涵盖了其中的一部分:
            //    Add:与另一个TimeSpan值相加。 
            //    Days:返回用天数计算的TimeSpan值。 
            //    Duration:获取TimeSpan的绝对值。 
            //    Hours:返回用小时计算的TimeSpan值 
            //    Milliseconds:返回用毫秒计算的TimeSpan值。 
            //    Minutes:返回用分钟计算的TimeSpan值。 
            //    Negate:返回当前实例的相反数。 
            //    Seconds:返回用秒计算的TimeSpan值。 
            //    Subtract:从中减去另一个TimeSpan值。 
            //    Ticks:返回TimeSpan值的tick数。 
            //    TotalDays:返回TimeSpan值表示的天数。 
            //    TotalHours:返回TimeSpan值表示的小时数。 
            //    TotalMilliseconds:返回TimeSpan值表示的毫秒数。 
            //    TotalMinutes:返回TimeSpan值表示的分钟数。 
            //    TotalSeconds:返回TimeSpan值表示的秒数。 

        }

        #endregion

        #region 上传文件方法,需要使和HTML上传控件

        /// 
        /// 上传文件方法 定义上传文件类型用数组 , 返回结果 如果为TYPE_ERR为类型不正确  如果返回SIZE_ERR为大小不正确 FILE_ERR为文件不正确 /r/n
        ///string[] strfiletype = new string[] { "jpg" };/r/n
        ///string strResult = string.Empty;/r/n
        ///strResult = Public.Upload.UploadFile(Server.MapPath("/updatepath"), 999999, strfiletype, PhotoFile);/r/n
        ///if (strResult == "TYPE_ERR")/r/n
        ///{/r/n
        ///    alert.show(this.Page, "图片格式不正确,请重新选择后再试!");/r/n
        ///    return;/r/n
        /// }/r/n
        /// 
        /// 文件路径
        /// 文件最大尺寸
        /// 文件类型
        /// 上传框
        /// 上传后的名字        
        /// 
        public static string UploadFile(string filePath, int maxSize, string[] fileType, System.Web.UI.HtmlControls.HtmlInputFile TargetFile, string GetImgFileName)
        {
            string Result = "UnDefine";
            bool typeFlag = false;
            string FilePath = filePath;
            int MaxSize = maxSize;
            string strFileName, strNewName, strFilePath;
            if (TargetFile.PostedFile.FileName == "")
            {
                return "FILE_ERR";
            }
            strFileName = TargetFile.PostedFile.FileName;
            TargetFile.Accept = "*/*";
            strFilePath = FilePath;
            if (Directory.Exists(strFilePath) == false)
            {
                Directory.CreateDirectory(strFilePath);
            }
            FileInfo myInfo = new FileInfo(strFileName);
            string strOldName = myInfo.Name;
            strNewName = strOldName.Substring(strOldName.LastIndexOf('.') + 1, strOldName.Length - strOldName.LastIndexOf('.') - 1);
            strNewName = strNewName.ToLower();
            //判断用户上传文件实际类型
            if (!GetMIMEByFileType(TargetFile.PostedFile.ContentType))
            {
                typeFlag = false;
                return "TYPE_ERR";
            }
            else
            {
                //if (TargetFile.PostedFile.ContentLength <= MaxSize)
                //{
                    for (int i = 0; i <= fileType.GetUpperBound(0); i++)
                    {
                        if (strNewName.ToLower() == fileType[i].ToString()) { typeFlag = true; break; }
                    }
                    if (typeFlag)
                    {
                        string strFileNameTemp = GetImgFileName;
                        string strFilePathTemp = strFilePath;
                        strOldName = strFileNameTemp + "." + strNewName;
                        strFilePath = strFilePath + strOldName;
                        TargetFile.PostedFile.SaveAs(strFilePath);

                        Result = strOldName;
                        TargetFile.Dispose();
                    }
                    else
                    {
                        return "TYPE_ERR";
                    }
                //}

                //else
                //{
                //    return "SIZE_ERR";
                //}
            }
            return (Result);
        }

        /// 
        /// 根据文件后缀名返回文件的MIME类型
        /// 
        /// 文件后缀名,没有.
        /// MIME类型
        public static bool GetMIMEByFileType(string strfiletype)
        {
            switch (strfiletype.ToLower())
            {
                case "image/gif": return true;
                case "image/jpeg": return true;
                case "image/pjpeg": return true;
                case "image/png": return true;
                case "application/x-MS-bmp": return true;
                default:
                    return false;
            }
        }



        #endregion

        #region 返回字符串真实长度, 1个汉字长度为2
        /// 
        /// 返回字符串真实长度, 1个汉字长度为2
        /// 
        /// 
        public static int GetStringLength(string str)
        {
            return Encoding.Default.GetBytes(str).Length;
        }

        #endregion

        #region 强随机数方法 2006-10-25 m
        /// 
        /// 获取随机数方法,可获得指定长度、是否为全数字、全字母、数字加字母形式
        /// 当有字母返回时可设置字母全大写、字母全小写、字母大小混合写形式
        /// 
        /// 指定返回随机数长度
        /// 
        /// 指定返回随机数的类型(0为全数字,1为数字与字母其中字母部分小写,2为数字与字母其中字母部分大写,3为数字与字母其中字母部分大小写混合
        /// 4为全小写字母,5为全大写字母,6为全字母且字母大小写混合)
        /// 
        /// 返回随机数字符串


        public static string GetRandNumber(int len, int mod)
        {

            #region 设置字符返回模式
            int isnu = 0;
            int ulword = 0;
            switch (mod)
            {
                case 0:
                    isnu = 0;
                    break;
                case 1:
                    isnu = 1;
                    ulword = 0;
                    break;
                case 2:
                    isnu = 1;
                    ulword = 1;
                    break;
                case 3:
                    isnu = 1;
                    ulword = 2;
                    break;
                case 4:
                    isnu = 2;
                    ulword = 0;
                    break;
                case 5:
                    isnu = 2;
                    ulword = 1;
                    break;
                case 6:
                    isnu = 2;
                    ulword = 2;
                    break;
            }
            #endregion
            RNGCryptoServiceProvider rcsp = new RNGCryptoServiceProvider();
            string getcrypt = "";
            if (isnu == 0)
            {
                #region 获得单纯数字的随机数
                byte[] Tarray = new byte[len];
                rcsp.GetNonZeroBytes(Tarray);
                string tstring = "";
                for (int i = 0; i < Tarray.Length; i++)
                {
                    tstring += Tarray[i].ToString();
                }
                Random rd = new Random();
                for (int cnt = 0; cnt < len; cnt++)
                {
                    getcrypt += tstring.Substring(rd.Next(0, tstring.Length), 1);
                }
                #endregion
            }
            else if (isnu == 1)
            {
                #region 获得数字加字母的随机数
                byte[] Tarray = new byte[1];
                int tcon = 0;
                while (tcon < len)
                {
                    rcsp.GetNonZeroBytes(Tarray);
                    if (((char)Tarray[0] < 91 && (char)Tarray[0] > 64) || ((char)Tarray[0] < 123 && (char)Tarray[0] > 96))
                    {
                        getcrypt += ((char)Tarray[0]).ToString();
                        tcon++;
                    }
                    else if (((char)Tarray[0] < 58 && (char)Tarray[0] > 47))
                    {
                        getcrypt += Tarray[0].ToString();
                        tcon++;
                    }
                }
                if (ulword == 0)
                {
                    getcrypt = getcrypt.ToLower();
                    getcrypt = getcrypt.Substring(0, len);
                }
                else if (ulword == 1)
                {
                    getcrypt = getcrypt.ToUpper();
                    getcrypt = getcrypt.Substring(0, len);
                }
                #endregion
            }
            else if (isnu == 2)
            {
                #region 获得字母的随机数
                byte[] Tarray = new byte[1];
                int tcon = 0;
                while (tcon < len)
                {
                    rcsp.GetNonZeroBytes(Tarray);
                    if (((char)Tarray[0] < 91 && (char)Tarray[0] > 64) || ((char)Tarray[0] < 123 && (char)Tarray[0] > 96))
                    {
                        getcrypt += ((char)Tarray[0]).ToString();
                        tcon++;
                    }
                }
                if (ulword == 0)
                {
                    getcrypt = getcrypt.ToLower();
                }
                else if (ulword == 1)
                {
                    getcrypt = getcrypt.ToUpper();
                }
                #endregion
            }
            return getcrypt;
        }

        #endregion

        #region 按指定长度截取指定字符串[自动判断半角/全角/符号,已正确返回字符串长度] 2007-02-26 m

        public static string returnstring(string rcstring, int sublen)
        {
            //rcstring = rcstring.Trim().Replace(" ","").Replace(" ","");
            if (rcstring.Length < 1)
            {
                return "";
            }
            else
            {
                string rcstr = ToBj(rcstring);
                int intsob = 0;
                if (sublen >= rcstr.Length)
                {
                    return rcstr;
                }
                else
                {
                    //string strnew = string.Empty;
                    //string strnew = rcstr.Substring(0,sublen);
                    StringBuilder strnew = new StringBuilder(rcstr.Substring(0, sublen));
                    int strnewlength = strnew.Length;
                    for (int i = 0; i < strnewlength; i++)
                    {
                        if (IsBjChar(strnew[i]))
                        {
                            intsob++;
                        }
                    }
                    if (intsob != 0 && intsob > 1)
                    {
                        int inti = 0;
                        int struns = intsob / 2;
                        int strunsis = intsob % 2;
                        string tempstri = rcstr.Substring(sublen, rcstr.Length - sublen);
                        int cnt = 0;
                        int intbom = 0;
                        while (inti < struns)
                        {
                            if (cnt == tempstri.Length)
                            {
                                break;
                            }
                            if (IsBjChar(tempstri[cnt]))
                            {
                                intbom++;
                                if (strunsis == 1 && intbom == 1)
                                {
                                    inti++;
                                    strunsis = 0;
                                    intbom = 0;
                                }
                                else if (intbom == 2)
                                {
                                    inti++;
                                    intbom = 0;
                                }
                            }
                            else
                            {
                                inti++;
                            }
                            strnew.Append(tempstri[cnt].ToString());
                            cnt++;
                        }

                    }
                    if (sublen > 17)
                        return strnew.ToString() + "...";
                    else
                        return strnew.ToString();
                }
            }

            ///如果传入参数为10个长度
            ///取当前字符串长度,并取前十个 依次进行循环  如果少几个就取几个
        }
        /// 
        /// 判断字符是否英文半角字符或标点
        /// 
        /// 
        /// 32       空格
        /// 33-47    标点
        /// 48-57    0~9
        /// 58-64    标点
        /// 65-90    A~Z
        /// 91-96    标点
        /// 97-122    a~z
        /// 123-126  标点
        /// 
        public static bool IsBjChar(char c)
        {
            int i = (int)c;
            return i >= 32 && i <= 126;
        }

        /**/
        /// 
        /// 判断字符是否全角字符或标点
        /// 
        /// 
        /// 全角字符 - 65248 = 半角字符
        /// 全角空格例外
        /// 
        public static bool IsQjChar(char c)
        {
            if (c == '\u3000') return true;

            int i = (int)c - 65248;
            if (i < 32) return false;
            return IsBjChar((char)i);
        }

        /**/
        /// 
        /// 将字符串中的全角字符转换为半角
        /// 
        public static string ToBj(string s)
        {
            if (s == null || s.Trim() == string.Empty) return s;

            StringBuilder sb = new StringBuilder(s.Length);
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == '\u3000')
                    sb.Append('\u0020');
                else if (IsQjChar(s[i]))
                    sb.Append((char)((int)s[i] - 65248));
                else
                    sb.Append(s[i]);
            }

            return sb.ToString();
        }
        #endregion

        #region 从字符串的指定位置截取指定长度的子字符串

        /// 
        /// 从字符串的指定位置截取指定长度的子字符串
        /// 
        /// 原字符串
        /// 子字符串的起始位置
        /// 子字符串的长度
        /// 子字符串
        public static string CutString(string str, int startIndex, int length)
        {
            if (startIndex >= 0)
            {
                if (length < 0)
                {
                    length = length * -1;
                    if (startIndex - length < 0)
                    {
                        length = startIndex;
                        startIndex = 0;
                    }
                    else
                    {
                        startIndex = startIndex - length;
                    }
                }


                if (startIndex > str.Length)
                {
                    return "";
                }


            }
            else
            {
                if (length < 0)
                {
                    return "";
                }
                else
                {
                    if (length + startIndex > 0)
                    {
                        length = length + startIndex;
                        startIndex = 0;
                    }
                    else
                    {
                        return "";
                    }
                }
            }

            if (str.Length - startIndex < length)
            {
                length = str.Length - startIndex;
            }

            return str.Substring(startIndex, length);
        }
        #endregion

        #region 从字符串的指定位置开始截取到字符串结尾的了符串
        /// 
        /// 从字符串的指定位置开始截取到字符串结尾的了符串
        /// 
        /// 原字符串
        /// 子字符串的起始位置
        /// 子字符串
        public static string CutString(string str, int startIndex)
        {
            return CutString(str, startIndex, str.Length);
        }

        #endregion

        #region 输出JS代码

        /// 
        /// 向用户提示对话框的类
        /// 
        //public class Alart
        //{
        /// 
        /// 输出模式枚举
        /// 
        public enum AlartState
        {
            /// 
            /// 在父窗口中打开该连接
            /// 
            OpenInParentWindow,
            /// 
            /// 在当前窗口中打开该连接
            /// 
            OpenInThisWindow,
            /// 
            /// 返回到上一个页面
            /// 
            Back,
            /// 
            /// 关闭窗口
            /// 
            CloseWindow,
            /// 
            /// 不做任何操作
            /// 
            Nothing
        }

        /// 
        /// 输出JS提示信息对话框 WebSite.Components.Public.ShowAlart(Context, "上传文件字节(大小)超过限制!", WebSite.Components.Public.AlartState.Nothing, Request.Url.ToString());
        /// 
        /// 页面Context
        /// 消息内容
        /// 输出模式 * 枚举
        /// 提示后要转到的URL
        ///
        public static void ShowAlart(HttpContext context, string Msg, AlartState Astate, string ToUrl)
        {
            System.Text.StringBuilder mySB = new System.Text.StringBuilder();

            mySB.AppendFormat("");

            context.Response.Write(mySB.ToString());

        }


        //}
        #endregion


        #region 获得设置配置文件

        #region 获取CONFIG中的appSettings指定键名的设置值

        /// 
        /// 获取CONFIG中的appSettings指定键名的设置值
        /// 
        /// 键名
        /// 键值  返回GET_ERR则获取错误
        public static string GetConfigPar(string configName)
        {
            try
            {
                return System.Configuration.ConfigurationManager.AppSettings[configName].ToString();
            }
            catch
            {
                return "GET_ERR";
            }
        }
        #endregion

        #region 读指定取配置文件
        /// 
        /// 读Setting.config取配置文件
        /// 
        /// 
        /// 
        /// 
        /// 
        static internal string GetConfigValue(string Target, string XmlPath)
        {
            System.Xml.XmlDocument xdoc = new XmlDocument();
            xdoc.Load(XmlPath);
            XmlElement root = xdoc.DocumentElement;
            XmlNodeList elemList = root.GetElementsByTagName(Target);
            return elemList[0].InnerXml;
        }
        #endregion

        #region  读Setting.config取配置文件

        /// 
        /// 读Setting.config取配置文件
        /// 
        /// 
        /// 
      public  static  string GetConfigValue(string Target)
        {
            string path = HttpContext.Current.Server.MapPath(@"~/Setting.config");
            return GetConfigValue(Target, path);
        }

        #endregion

        #region 设置CONFIG中的appSettings指定键名的值
        /// 
        /// 设置CONFIG中的appSettings指定键名的值
        /// 
        /// 键名
        /// 键值
        /// 返回设置结果 SET_ERR则设置失败  SET_SUC则设置成功
        public static string SetConfiParEng(string configName, string configValue)
        {
            try
            {//this.Request.ApplicationPath + 
                string file = HttpContext.Current.Server.MapPath(@"~\Web.config");
                XmlDocument document = new XmlDocument();
                document.Load(file);
                XmlNode node = document.SelectSingleNode("//add[@key = '" + configName + "']");
                node.Attributes[configName].Value = configValue;
                document.Save(file);

                return "SET_SUC";
            }
            catch
            {
                return "SET_ERR";
            }
        }

        #endregion

        #region 设置指定键名及新值

        public static void SetConfiPar_E(string appSettingsName, string newValue)
        {
            string fileName = HttpContext.Current.Server.MapPath(@"~\Web.config");
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(fileName);
            XmlNodeList topM = xmlDoc.DocumentElement.ChildNodes;
            foreach (XmlElement element in topM)
            {
                #region 取得目标节点,并赋新值

                if (element.Name == "appSettings")
                {
                    XmlNodeList node = element.ChildNodes;
                    if (node.Count > 0)
                    {
                        foreach (XmlElement el in node)
                        {
                            if (el.Attributes["key"].Value == appSettingsName)
                            {
                                el.Attributes["value"].Value = newValue;
                                xmlDoc.Save(fileName);
                                return;
                            }
                        }
                    }
                }

                #endregion
            }
        }

        #endregion

        #region 设置指定键名及新值

        public static void SetConfiPar_3(string appSettingsName, string newValue)
        {
            string filename = HttpContext.Current.Server.MapPath(@"~\Web.config");
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(filename);

            XmlNodeList topM = xmldoc.DocumentElement.ChildNodes;
            foreach (XmlElement element in topM)
            {
                if (element.Name.ToLower() == "appsettings")
                {
                    XmlNodeList _node = element.ChildNodes;
                    if (_node.Count > 0)
                    {
                        foreach (XmlElement el in _node)
                        {
                            if (el.Attributes["key"].InnerXml.ToLower() == appSettingsName.ToLower())
                            {
                                el.Attributes["value"].Value = newValue;
                            }
                        }
                    }
                }

            }
            xmldoc.Save(filename);
        }

        #endregion

        #region 得到配置文件
        public static XmlDocument GetWebConfig()
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(GetXmlFileName());
            return xmlDoc;
        }
        #endregion

        #region 得到WEBCONFIG配置文件
        public static string GetXmlFileName()
        {
            //  return HttpContext.Current.Server.MapPath(@"~\Web.config");
            return HttpContext.Current.Server.MapPath(@"~\Web.config");
        }
        #endregion

        #region 判断是否存在此节点
        /// 
        /// 判断是否存在此节点
        /// 
        /// 
        /// 
        public bool IsExistNode(string strNode)
        {
            XmlDocument xmlDoc = GetWebConfig();
            XmlNode xmlNode = xmlDoc.SelectSingleNode(@"/" + strNode);
            // retrieve the appSettings xmlNode   
            xmlNode = xmlDoc.SelectSingleNode("//" + strNode);
            return (xmlNode != null);
        }
        #endregion

        #region 判断指定节点名及键值
        /// 
        /// 判断指定节点名及键值
        /// 
        /// 
        /// 
        /// 
        public bool IsExistKey(string strNodeName, string strKey)
        {
            XmlDocument xmlDoc = GetWebConfig();
            bool IsExist = false;
            //在当前所有节点中循环查找
            XmlNodeList topM = xmlDoc.DocumentElement.ChildNodes;
            foreach (XmlElement element in topM)
            {
                //判定是否存在节点
                if (element.Name == strNodeName)
                {
                    XmlNodeList node = element.ChildNodes;
                    //判定是否存在定义的信息
                    if (node.Count > 0)
                    {
                        //在子节点中循环查找
                        foreach (XmlElement el in node)
                        {
                            //判定Key是否等于所需信息Liumm
                            IsExist = (el.Attributes["key"].InnerXml == strKey);
                            if (IsExist) break;
                        }
                    }

                }
            }
            return IsExist;

        }
        #endregion

        #region 设置指定键名及值

        /// 
        /// 设置指定键名及值
        /// 
        /// 
        /// 
        public static void SetConfiPar(string key, string value)
        {
            XmlDocument xmlDoc = GetWebConfig();
            XmlNode xmlNode = xmlDoc.SelectSingleNode(@"/appSettings");
            // retrieve the appSettings xmlNode   
            xmlNode = xmlDoc.SelectSingleNode("//appSettings");
            if (xmlNode == null)
            {
                throw new InvalidOperationException("appSettings section not found");
            }
            try
            {
                // XPath select setting "add" element that contains this key       
                XmlElement addElem = (XmlElement)xmlNode.SelectSingleNode("//add[@key='" + key + "']");
                if (addElem != null)
                {
                    addElem.SetAttribute("value", value);
                }
                // not found, so we need to add the element, key and value   
                else
                {
                    XmlElement entry = xmlDoc.CreateElement("add");
                    entry.SetAttribute("key", key);
                    entry.SetAttribute("value", value);
                    xmlNode.AppendChild(entry);
                }
                //save it   
                try
                {
                    XmlTextWriter writer = new XmlTextWriter(GetXmlFileName(), null);
                    writer.Formatting = Formatting.Indented;
                    xmlDoc.WriteTo(writer);
                    writer.Flush();
                    writer.Close();
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(ex.Message);
            }
        }
        #endregion

        #endregion

你可能感兴趣的:(C#,ASP.NET)