关于时间处理的相关类


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace InterfaceBll
{
    public class DatetimeHelper
    {
        /// <summary>
        /// 得到本周第一天(以星期一为第一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public static DateTime GetWeekFirstDayMon(DateTime datetime)
        {
            //星期一为第一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
 
            //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。
            weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
            int daydiff = (-1) * weeknow;
 
            //本周第一天
            string firstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(firstDay);
        }
 
 
        /// <summary>
        /// 得到本周最后一天(以星期天为最后一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public static DateTime GetWeekLastDaySun(DateTime datetime)
        {
            //星期天为最后一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
            weeknow = (weeknow == 0 ? 7 : weeknow);
            int daydiff = (7 - weeknow);
 
            //本周最后一天
            string lastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(lastDay);
        }
 
        /// <summary>
        /// 获得季度值。
        /// </summary>
        /// <param name="month">月份</param>
        /// <returns></returns>
        public static int GetSeason(int month)
        {
            if (month < 4)
                return 1;
            else if (month >= 4 && month < 7)
                return 2;
            else if (month >= 7 && month < 10)
                return 3;
            else
                return 4;
        }
 
        /// <summary>
        /// 获得季度名称。
        /// </summary>
        /// <param name="month">月份</param>
        /// <returns></returns>
        public static string GetSeasonName(int month)
        {
            if (month < 4)
                return "一季度";
            else if (month >= 4 && month < 7)
                return "二季度";
            else if (month >= 7 && month < 10)
                return "三季度";
            else
                return "四季度";
        }
 
        /// <summary>
        /// 根据月份获取本月分所在季节的首月及末月
        /// </summary>
        /// <param name="month">当前月份</param>
        /// <param name="bMonth">首月</param>
        /// <param name="eMonth">末月</param>
        ///  <returns>当前月份所属的季度</returns>
        public static string GetSeasonMonth(string month, ref string bMonth, ref string eMonth)
        {
            string season = "";
            switch (month)
            {
                case "01":
                case "02":
                case "03":
                    bMonth = "01";
                    eMonth = "03";
                    season = "1";
                    break;
                case "04":
                case "05":
                case "06":
                    bMonth = "04";
                    eMonth = "06";
                    season = "2";
                    break;
                case "07":
                case "08":
                case "09":
                    bMonth = "07";
                    eMonth = "09";
                    season = "3";
                    break;
                case "10":
                case "11":
                case "12":
                    bMonth = "10";
                    eMonth = "12";
                    season = "4";
                    break;
                default:
                    break;
            }
            return season;
        }
 
        /// <summary>
        /// 获取该年中是第几周
        /// </summary>
        /// <param name="day">日期</param>
        /// <returns></returns>
        public static int WeekOfYear(DateTime day)
        {
            int weeknum;
            DateTime fDt = DateTime.Parse(day.Year.ToString() + "-01-01");
            int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几 
            if (k == 0)
            {
                k = 7;
            }
            int l = Convert.ToInt32(day.DayOfYear);//得到当天是该年的第几天 
            l = l - (7 - k + 1);
            if (l <= 0)
            {
                weeknum = 1;
            }
            else
            {
                if (l % 7 == 0)
                {
                    weeknum = l / 7 + 1;
                }
                else
                {
                    weeknum = l / 7 + 2;//不能整除的时候要加上前面的一周和后面的一周 
                }
            }
            return weeknum;
        }
 
        /// <summary>
        /// 取得年唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <returns></returns>
        public static string GetYearUniqueName(int year)
        {
            return string.Format("[时间].[年月日].[年].&[{0}]", year);
        }
 
        /// <summary>
        ///  取得季唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetQuarterUniqueName(int year, int month)
        {
            string quarter = GetSeason(month).ToString().PadLeft(2, '0');
            return string.Format("[时间].[年月日].[季度].&[{0}]&[{0}{1}]", year, quarter);
        }
 
        /// <summary>
        ///  取得月唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetMonthUniqueName(int year, int month)
        {
            string quarter = GetSeason(month).ToString().PadLeft(2, '0');
            string mon = month.ToString().PadLeft(2, '0');
            return string.Format("[时间].[年月日].[月].&[{0}]&[{0}{1}]&[{0}{2}]", year, quarter, mon);
        }
 
 
 
 
 
 
 
 
 
        /// <summary>
        /// 取得年唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <returns></returns>
        public static string GetYearUniqueName(string year)
        {
            return string.Format("[发生时间].[年季月].[年].&[{0}]", year);
        }
 
        /// <summary>
        ///  取得季唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetQuarterUniqueName(string year, string month)
        {
            string quarter = GetSeason(int.Parse(month)).ToString().PadLeft(2, '0');
            return string.Format("[发生时间].[年季月].[季].&[{0}]", year + quarter);
        }
 
        /// <summary>
        ///  取得月唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetMonthUniqueName(string yearMonth)
        {
            return string.Format("[发生时间].[年季月].[月].&[{0}]", yearMonth);
        }
 
 
 
 
        /// <summary>
        /// 取得年唯一名称
        /// </summary>
        /// <param name="name">维度名称</param>
        /// <param name="year">年</param>
        /// <returns></returns>
        public static string GetYearUniqueName(string name, string year)
        {
            return string.Format("[{1}].[年季月].[年].&[{0}]", year, name);
        }
 
        /// <summary>
        ///  取得季唯一名称
        /// </summary>
        /// <param name="year"></param>
        /// <param name="name">维度名称</param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetQuarterUniqueName(string name, string year, string month)
        {
            string quarter = GetSeason(int.Parse(month)).ToString().PadLeft(2, '0');
            return string.Format("[{1}].[年季月].[季].&[{0}]", year + quarter, name);
        }
 
        /// <summary>
        ///  取得月唯一名称
        /// </summary>
        /// <param name="name">维度名称</param>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        public static string GetMonthUniqueName(string name, string yearMonth)
        {
            return string.Format("[{1}].[年季月].[月].&[{0}]", yearMonth, name);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值