C# 点滴

a、asp.net core 获取当前区域(area)的名称: 

_accessor.HttpContext.GetRouteValue("area");  //_accessor 是 IHttpContextAccessor 接口实例。


b、asp.net core 中获取当前请求的Url:

new StringBuilder().Append(request.Scheme).Append("://").Append(request.Host).Append(request.PathBase).Append(request.Path).Append(request.QueryString).ToString();


c、把星期/月份实例转换为指定区域文字:

DayOfWeek d = (DayOfWeek)1;
int m = 1; //1月份
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("zh-CN");
System.Globalization.DateTimeFormatInfo info = ci.DateTimeFormat;
Console.WriteLine(info.GetAbbreviatedDayName(d)); //周一
Console.WriteLine(info.GetDayName(d)); //星期一
Console.WriteLine(info.GetAbbreviatedMonthName(m)); //1月


d、获取当前区域与UTC时间的时区差: TimeSpan ts = TimeZoneInfo.Local.BaseUtcOffset;


e、中国时间与太平洋时间互转

/// <summary>
/// 中国时间转换为太平洋时间
/// </summary>
/// <returns></returns>
public static DateTime ChinaTimeToPacificTime(DateTime ChinaDateTime)
{
    DateTime utcdt = TimeZoneInfo.ConvertTimeToUtc(ChinaDateTime, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));            
    return TimeZoneInfo.ConvertTimeFromUtc(utcdt, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}

/// <summary>
/// 太平洋时间转换为中国时间
/// </summary>
/// <param name="PacificDateTime"></param>
/// <returns></returns>
public static DateTime PacificTimeToChinaTime(DateTime PacificDateTime)
{
    DateTime utcdt = TimeZoneInfo.ConvertTimeToUtc(PacificDateTime, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
    return TimeZoneInfo.ConvertTimeFromUtc(utcdt, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));
}


f、元组的特殊扩展

/// <summary>
/// 把一个特殊元组(仅2个元素,且都为int类型), 转换为int数组。比如日历控件中的日期,需要循环生成1-31日,使用此扩展就是 (1,31).ToArray(),就得到集合 1,2,3,4,....
/// </summary>
/// <param name="SourceTuple"></param>
/// <returns></returns>
public static IEnumerable<int> ToArray(this (int Min, int Max) SourceTuple)
{
    List<int> list = new List<int>();
    if (SourceTuple.Max <= SourceTuple.Min) return list;
    for (int i = SourceTuple.Min; i <= SourceTuple.Max; i++)
    {
	list.Add(i);
    }
    return list;
}

e、ipv4与长整型互转

/**
         * ip地址转成long型数字
         * 将IP地址转化成整数的方法如下:
         * 1、通过String的split方法按.分隔得到4个长度的数组
         * 2、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
         * @param strIp
         * @return
         */
        public static long IpToLong(string strIp)
        {
            string[] ip = strIp.Split('.');
            return (long.Parse(ip[0]) << 24) + (long.Parse(ip[1]) << 16) + (long.Parse(ip[2]) << 8) + long.Parse(ip[3]);
        }

        /**
         * 将十进制整数形式转换成127.0.0.1形式的ip地址
         * 将整数形式的IP地址转化成字符串的方法如下:
         * 1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
         * 2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
         * 3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
         * 4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
         * @param longIp
         * @return
         */
        public static string LongToIP(long longIp)
        {
            return (longIp >> 24).ToString() + "." + ((longIp & 0x00FFFFFF) >> 16).ToString() + "." + ((longIp & 0x0000FFFF) >> 8).ToString() + "." + (longIp & 0x000000FF).ToString();
        }


2022-05-26 C#

发布评论