C# 一些常用小功能1
1、获取指定时间所在月份的最后一天
public static DateTime LastDay(this DateTime a)
{
return a.AddDays(DateTime.DaysInMonth(a.Year, a.Month) - a.Day);
}
2、获取指定时间所在月份的第一天
public static DateTime FirstDay(this DateTime a)
{
return a.AddDays(1 - a.Day);
}
3、深度拷贝
/// <summary>
/// 深度拷贝
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T DeepCopy<T>(this T obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(typeof(T));
xml.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
retval = xml.Deserialize(ms);
ms.Close();
}
return (T)retval;
}
4、判断两个时间相差多少天
/// <summary>
/// 判断两个时间相差多少天
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int DifferDay(DateTime a, DateTime b)
{
TimeSpan ts1 = new TimeSpan(a.Ticks);
TimeSpan ts2 = new TimeSpan(b.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
return Math.Abs(ts.Days);
}
5、判断两个时间相差多少秒
/// <summary>
/// 判断两个时间相差多少秒
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static long DifferSeconds(DateTime a, DateTime b)
{
return Math.Abs(a.Ticks - b.Ticks) / 10000000;
}
6、获取代码中的行号
/// <summary>
/// 获取行号
/// </summary>
/// <returns></returns>
public static int GetLineNum()
{
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(1, true);
return st.GetFrame(0).GetFileLineNumber();
}
7、获取函数名
/// <summary>
/// 获取函数名
/// </summary>
/// <returns></returns>
public static string GetFuncName()
{
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(1, true);
return st.GetFrame(0).GetMethod().Name;
}
正常操作
StackTrace st = new StackTrace(new StackFrame(true));
Console.WriteLine("Stack trace for current level: {0}", st.ToString());
StackFrame sf = st.GetFrame(0);
Console.WriteLine("File: {0}", sf.GetFileName());
Console.WriteLine("Method: {0}", sf.GetMethod().Name);
Console.WriteLine("Line Number: {0}", sf.GetFileLineNumber());
Console.WriteLine("Column Number: {0}", sf.GetFileColumnNumber());
异常处理中
try
{
throw new Exception();
}
catch (Exception e1)
{
string errMsg = "Method: " + e1.TargetSite.Name + "() run error.";
Console.WriteLine(errMsg);
}
8、POST、GET、DELETE请求
/// <summary>
/// Get请求,无参数
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
req.KeepAlive = true;
req.Timeout = 300000;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
req.UserAgent = "Mozilla/5.0";
req.CookieContainer = new CookieContainer();
var rsp = (HttpWebResponse)req.GetResponse();
using (Stream stream = rsp.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
return sr.ReadToEnd();
}
}
}
/// <summary>
/// Get请求,带参数
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string Get(string url, string param)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + "?" + param);
req.Method = "GET";
req.KeepAlive = true;
req.Timeout = 300000;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
req.UserAgent = "Mozilla/5.0";
req.CookieContainer = new CookieContainer();
var rsp = (HttpWebResponse)req.GetResponse();
using (Stream stream = rsp.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
return sr.ReadToEnd();
}
}
}
/// <summary>
/// Post请求,字符串参数
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string Post(string url, string param)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
req.UserAgent = "Mozilla/5.0";
req.CookieContainer = new CookieContainer();
byte[] bs = Encoding.UTF8.GetBytes(param);
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
using (Stream stream = rsp.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
var str = sr.ReadToEnd();
return str;
}
}
}
/// <summary>
/// Post请求,类参数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="model"></param>
/// <returns></returns>
public static string Post<T>(string url, T model)
{
var strParam = Newtonsoft.Json.JsonConvert.SerializeObject(model);
byte[] bs = Encoding.UTF8.GetBytes(strParam);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
req.ContentLength = bs.Length;
req.CookieContainer = new CookieContainer();
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
using (Stream stream = rsp.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
return sr.ReadToEnd();
}
}
}
/// <summary>
/// 文件请求
/// </summary>
/// <param name="url"></param>
/// <param name="model"></param>
/// <returns></returns>
public static Stream PostFile(string url, IFormFile model)
{
Stream stream = model.OpenReadStream();
var postContent = new MultipartFormDataContent();
string boundary = string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));
postContent.Headers.Add("ContentType", $"multipart/form-data, boundary={boundary}");
postContent.Add(new StreamContent(stream, (int)stream.Length), "file", model.FileName);
var httpclient = new HttpClient();
var response = httpclient.PostAsync(url, postContent).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsStream();
}
else return null;
}
/// <summary>
/// Delete请求
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string Delete(string url, string param)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{url}/{param}");
req.Method = "DELETE";
req.KeepAlive = true;
req.ContentType = "application/json";
req.UserAgent = "Mozilla/5.0";
req.CookieContainer = new CookieContainer();
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
using (Stream stream = rsp.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
var str = sr.ReadToEnd();
return str;
}
}
}