#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