C# 獲取時間大全


獲取本周第一天
public static string GetMonday()
{
    DateTime startWeek = DateTime.Now.AddDays(1 - Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d")));  //本周周一
    return startWeek.ToString("yyyyMMdd");
}
獲取本周最后一天
public static string GetMonday()
{
    DateTime endWeek = DateTime.Now.AddDays(1 - Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).AddDays(6);  //本周周日
    return endWeek.ToString("yyyyMMdd");
}

 

 如果需要繼續往前推薦周,只需修改,往前-7天,兩周-14,以此類推

DateTime startWeek = DateTime.Now.AddDays(1 -7- Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).AddDays(6);

 

其他時間幫助方法

public class DateTimeHelper
    {
        //星期數組
        private static string[] _weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

        #region 時間操作
        /// <summary>
        /// 獲得當前時間的""yyyy-MM-dd HH:mm:ss:fffffff""格式字符串
        /// </summary>
        public static string GetDateTimeMS()
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fffffff");
        }

        /// <summary>
        /// 獲得當前時間的""yyyy年MM月dd日 HH:mm:ss""格式字符串
        /// </summary>
        public static string GetDateTimeU()
        {
            return string.Format("{0:U}", DateTime.Now);
        }

        /// <summary>
        /// 獲得當前時間的""yyyy-MM-dd HH:mm:ss""格式字符串
        /// </summary>
        public static string GetDateTime()
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

        /// <summary>
        /// 獲得當前日期
        /// </summary>
        public static string GetDate()
        {
            return DateTime.Now.ToString("yyyy-MM-dd");
        }

        /// <summary>
        /// 獲得中文當前日期
        /// </summary>
        public static string GetChineseDate()
        {
            return DateTime.Now.ToString("yyyy月MM日dd");
        }

        /// <summary>
        /// 獲得當前時間(不含日期部分)
        /// </summary>
        public static string GetTime()
        {
            return DateTime.Now.ToString("HH:mm:ss");
        }

        /// <summary>
        /// 獲得當前小時
        /// </summary>
        public static string GetHour()
        {
            return DateTime.Now.Hour.ToString("00");
        }

        /// <summary>
        /// 獲得當前天
        /// </summary>
        public static string GetDay()
        {
            return DateTime.Now.Day.ToString("00");
        }

        /// <summary>
        /// 獲得當前月
        /// </summary>
        public static string GetMonth()
        {
            return DateTime.Now.Month.ToString("00");
        }

        /// <summary>
        /// 獲得當前年
        /// </summary>
        public static string GetYear()
        {
            return DateTime.Now.Year.ToString();
        }

        /// <summary>
        /// 獲得當前星期(數字)
        /// </summary>
        public static string GetDayOfWeek()
        {
            return ((int)DateTime.Now.DayOfWeek).ToString();
        }

        /// <summary>
        /// 獲得當前星期(漢字)
        /// </summary>
        public static string GetWeek()
        {
            return _weekdays[(int)DateTime.Now.DayOfWeek];
        }

        /// <summary>
        /// 獲得日期組合數字
        /// </summary> 
        public static string GetDateTimeffff()
        {
            return DateTime.Now.ToString("yyyyMMddHHmmssfffffff");
        }

        /// <summary>
        /// 比較日期是否比當前日期小
        /// </summary> 
        public static bool IsLessDateTime(string time)
        {
            if (string.IsNullOrWhiteSpace(time)) return false;
            DateTime dt = DateTime.Parse(time);
            if (dt < DateTime.Now) return true;
            return false;
        }

        /// <summary>
        /// 比較日期是否大於當前日期
        /// </summary> 
        public static bool IsGreaterDateTime(string time)
        { 
            if (string.IsNullOrWhiteSpace(time)) return false; 
            DateTime dt = DateTime.Parse(time);
            if (dt > DateTime.Now) return true;
            return false;
        }
        #endregion

        /// <summary>
        /// 聲明期間類型枚舉
        /// </summary>
        public enum Period { Day, Week, Month, Year };
        /// <summary>
        /// 獲取指定期間的起止日期
        /// </summary>
        /// <param name="period">期間類型</param>
        /// <param name="beginDate">開始日期</param>
        /// <param name="endDate">結束日期</param>
        public static void GetPeriod(Period period, out DateTime beginDate, out DateTime endDate)
        {
            int year = DateTime.Today.Year;
            int month = DateTime.Today.Month;
            switch (period)
            {
                case Period.Year: //
                    beginDate = new DateTime(year, 1, 1);
                    endDate = new DateTime(year, 12, 31);
                    break;
                case Period.Month: //
                    beginDate = new DateTime(year, month, 1);
                    endDate = beginDate.AddMonths(1).AddDays(-1);
                    break;
                case Period.Week: //
                    int week = (int)DateTime.Today.DayOfWeek;
                    if (week == 0) week = 7; //周日
                    beginDate = DateTime.Today.AddDays(-(week - 1));
                    endDate = beginDate.AddDays(6);
                    break;
                default: //
                    beginDate = DateTime.Today;
                    endDate = DateTime.Today;
                    break;
            }
        }

        /// <summary>
        /// 時間戳轉為C#格式時間
        /// </summary>
        /// <param name=”timeStamp”></param>
        /// <returns></returns>
        public static DateTime GetTime(string timeStamp)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }

        /// <summary>
        /// DateTime時間格式轉換為Unix時間戳格式
        /// </summary>
        /// <param name=”time”></param>
        /// <returns></returns>
        public static string ConvertDateTime(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            return Convert.ToString((int)(time - startTime).TotalSeconds);
        }

        /// <summary>
        /// 根據第幾周 獲取開始時間和結束時間
        /// </summary>
        /// <param name="week">周數</param>
        /// <param name="month">月份</param>
        /// <returns></returns> 
        public static Tuple<DateTime, DateTime> GetWeeks(int? week, int? month)
        {
            DateTime dt = DateTime.Now;

            string[] arrDate0 = new string[6];
            string[] arrDate1 = new string[6];

            //
            int year = dt.Year;

            ////當前月第一天
            DateTime weekStart = new DateTime(year, month.Value, 1);

            //該月的最后一天
            DateTime monEnd = weekStart.AddMonths(1).AddDays(-1);

            int i = 1;

            //當前月第一天是星期幾
            int dayOfWeek = Convert.ToInt32(weekStart.DayOfWeek.ToString("d"));

            //該月第一周結束日期
            DateTime weekEnd = dayOfWeek == 0 ? weekStart : weekStart.AddDays(7 - dayOfWeek);

            string content = "";

            // content += "第" + i + "周起始日期: " + weekStart.ToShortDateString() + "   結束日期: " + weekEnd.ToShortDateString() + "\n";
            arrDate0[0] = weekStart.ToString("yyyy-MM-dd 00:00:00");
            arrDate1[0] = weekEnd.ToString("yyyy-MM-dd 23:59:59");

            //當日期小於或等於該月的最后一天
            while (weekEnd.AddDays(1) <= monEnd)
            {
                i++;

                //該周的開始時間
                weekStart = weekEnd.AddDays(1);

                //該周結束時間
                weekEnd = weekEnd.AddDays(7) > monEnd ? monEnd : weekEnd.AddDays(7);

                arrDate0[i - 1] = weekStart.ToString("yyyy-MM-dd 00:00:00");
                arrDate1[i - 1] = weekEnd.ToString("yyyy-MM-dd 23:59:59");

                // content += "第" + i + "周起始日期: " + weekStart.ToShortDateString() + "   結束日期: " + weekEnd.ToShortDateString() + "\n";
            }

            content += year + "" + month + "月共有" + i + "周\n";

            int AddDay = 6 - (DateTime.Parse(arrDate1[week.Value]).Day - DateTime.Parse(arrDate0[week.Value]).Day);

            return Tuple.Create(DateTime.Parse(arrDate0[week.Value]), DateTime.Parse(arrDate1[week.Value]).AddDays(AddDay));
        }
         
        /// <summary>
        /// 根據季度 獲取開始時間和結束時間
        /// </summary>
        /// <param name="quarter">季度</param>
        /// <returns></returns> 
        private Tuple<DateTime, DateTime> GetQurater(string quarter)
        {
            DateTime dt = new DateTime();

            switch (quarter)
            {
                case "一季度":
                    dt = DateTime.Parse(DateTime.Now.Year + ",1, 01");
                    break;
                case "二季度":
                    dt = DateTime.Parse(DateTime.Now.Year + ",4, 01");
                    break;
                case "三季度":
                    dt = DateTime.Parse(DateTime.Now.Year + ",7, 01");
                    break;
                case "四季度":
                    dt = DateTime.Parse(DateTime.Now.Year + ",10, 01");
                    break;
            }

            //本季度初 
            string start = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day).ToString("yyyy-MM-01 00:00:00");  //本季度初    

            //獲取本季度的最后一天  
            string end = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day).AddMonths(3).AddDays(-1).ToString("yyyy-MM-dd 23:59:59"); ;  //
             
            return Tuple.Create(DateTime.Parse(start), DateTime.Parse(end));
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM