Beispiel #1
0
        /// <summary>
        /// 得到一年中的某周的起始日和截止日
        /// 年 nYear
        /// 周数 nNumWeek
        /// 周始 out dtWeekStart
        /// 周终 out dtWeekeEnd
        /// </summary>
        /// <param name="_"></param>
        /// <param name="nYear">年份</param>
        /// <param name="nNumWeek">第几周</param>
        /// <param name="dtWeekStart">开始日期</param>
        /// <param name="dtWeekeEnd">结束日期</param>
        public static void GetWeekTime(this DateTime _, int nYear, int nNumWeek, out DateTime dtWeekStart, out DateTime dtWeekeEnd)
        {
            DateTime dt = new DateTime(nYear, 1, 1);

            dt         += new TimeSpan((nNumWeek - 1) * 7, 0, 0, 0);
            dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday);
            dtWeekeEnd  = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1);
        }
Beispiel #2
0
 /// <summary>
 /// 指定したセクションの現在時刻に対する残り時間を取得します
 /// </summary>
 /// <param name="section">セクション(1=午前, 2=午後, 3=月末~月始)</param>
 /// <returns>セクション開始前は「待ち○○」、セクション中は「あと○○」、セクション終了後は「確定」※○○はh:mmとなります</returns>
 public static string GetTodaysLimitTimeString(int section)
 {
     DateTime now = DateTime.Now;
     DateTime start, limit;
     int nowsection = GetSection(now);
     if (now.Hour >= 0 && now.Hour < 2)
     {
         start = new DateTime(now.Year, now.Month, now.Day).AddDays(-1);
         limit = new DateTime(now.Year, now.Month, now.Day).AddDays(-1);
     }
     else
     {
         start = new DateTime(now.Year, now.Month, now.Day);
         limit = new DateTime(now.Year, now.Month, now.Day);
     }
     //これとは別にSection=3だった場合は1日進める
     if (nowsection == 3)
     {
         start = start.AddDays(1);
         limit = limit.AddDays(1);
     }
     switch (section)
     {
         case 1:
             start += new TimeSpan(2, 0, 0);
             limit += new TimeSpan(14, 0, 0);
             break;
         case 2:
             //最終日の場合
             start += new TimeSpan(14, 0, 0);
             if (start.AddDays(1).Day == 1)
             {
                 limit += new TimeSpan(22, 0, 0);
             }
             limit += new TimeSpan(26, 0, 0);
             break;
         case 3:
             start += new TimeSpan(22, 0, 0);
             limit += new TimeSpan(26, 0, 0);
             break;
     }
     //セクション終わってた場合
     if (now >= limit) return "確定";
     //始まってない場合
     else if (nowsection != section) return "待ち" + (start - now).ToString(@"h\:mm");
     //セクション中の場合
     else return "あと" + (limit - now).ToString(@"h\:mm");
 }