aps.net中几个常用的时间计算

  1        ///   <summary>
  2        ///  获取周的数据信息
  3        ///   </summary>
  4       ///   <param name="argTime"> 为当前时间 </param>
  5       private   void  GetWeekData( string  argTime)
  6      {
  7          DateTime _thisTime  =  Convert.ToDateTime(argTime);
  8          DateTime dtWeekStart  =   new  DateTime();
  9          DateTime dtWeekeEnd  =   new  DateTime();
 10          DateTimeUtils.GetWeek(_thisTime.Year, DateTimeUtils.WeekOfYear(_thisTime),  out  dtWeekStart,  out  dtWeekeEnd);
 11 
 12           int  start  =  dtWeekStart.Day;
 13           int  end  =  dtWeekeEnd.Day;
 14          DataTable _thisTable  =  CreateWhereTable();
 15 
 16          TimeSpan ts  =  dtWeekeEnd.Subtract(dtWeekStart);
 17 
 18           int  j  =  ts.Days;
 19           for  ( int  i  =  ts.Days; i  >=   0 ; i -- )
 20          {
 21              DateTime _thisMyTime  =  dtWeekStart.AddDays(j);
 22              _thisTable  =  CreateWhereTableRow(_thisTable, _thisMyTime.ToString( " yyyy-MM-dd " ),  " Week " );
 23              j  -=   1 ;
 24          }
 25 
 26           string  _thisTempTime  =  _thisTime.ToString( " yyyy-MM-dd " );
 27          DataRow _thisRow  =  _thisTable.NewRow();
 28           foreach  (DataRow _row  in  _thisTable.Rows)
 29          {
 30               if  (_row[ " Date " ].ToString().Trim().Equals(_thisTempTime))
 31              {
 32                  _thisRow[ " Date " =  _row[ " Date " ];
 33                  _thisRow[ " Class " =  _row[ " Class " ];
 34                  _thisTable.Rows.Remove(_row);
 35                  _thisTable.Rows.InsertAt(_thisRow,  0 );
 36                   break ;
 37              }
 38          }
 39           // _thisTable 为当前一周内所有日期(当然这一周是以星期日开始)
 40          GetData(_thisTable); // 这里则根据一周信息绑定相应数据方法。
 41 
 42      }
 43 
 44 
 45       ///   <summary>
 46       ///  获取月数据
 47       ///   </summary>
 48       ///   <param name="argDate"></param>
 49       private   void  GetMonthDate( string  argDate)
 50      {
 51          DataTable _thisTable  =  CreateWhereTable();
 52          DateTime _thisTime  =  DateTimeUtils.FirstDayOfMonth(Convert.ToDateTime(argDate)); // 获取月的第一天
 53          DateTime _thisEndTime  =  DateTimeUtils.LastDayOfMonth(Convert.ToDateTime(argDate)); // 获取月的最后一天
 54           int  FirstDay  =  DateTimeUtils.FirstDayOfMonth(Convert.ToDateTime(argDate)).Day; // 获取月第一天的天数
 55           int  LastDay  =  DateTimeUtils.LastDayOfMonth(Convert.ToDateTime(argDate)).Day; // 获取月最后一天的天数
 56          _thisTable  =  CreateWhereTableRow(_thisTable, _thisEndTime.ToString(),  " Month " );
 57 
 58           for  ( int  i  =  FirstDay; i  <  LastDay; i ++ )
 59          {
 60              _thisTable  =  CreateWhereTableRow(_thisTable, _thisEndTime.AddDays( - i).ToString( " yyyy-MM-dd " ),  " Month " );
 61          }
 62 
 63           string  _thisTempTime  =  Convert.ToDateTime(argDate).ToString( " yyyy-MM-dd " );
 64          DataRow _thisRow  =  _thisTable.NewRow();
 65           foreach  (DataRow _row  in  _thisTable.Rows)
 66          {
 67               if  (_row[ " Date " ].ToString().Trim().Equals(_thisTempTime))
 68              {
 69                  _thisRow[ " Date " =  _row[ " Date " ];
 70                  _thisRow[ " Class " =  _row[ " Class " ];
 71                  _thisTable.Rows.Remove(_row);
 72                  _thisTable.Rows.InsertAt(_thisRow,  0 );
 73                   break ;
 74              }
 75          }
 76 
 77          GetData(_thisTable);
 78      }
 79 
 80 
 81       // 获取年的数据
 82       private   void  GetYearDate( string  argDate)
 83      {
 84          DateTime _thisDt  =  Convert.ToDateTime(argDate);
 85          DataTable _thisTable  =  CreateWhereTable();
 86           int  year  =  _thisDt.Year;
 87 
 88           string  _thisStrDate  =   string .Empty;
 89           for  ( int  i  =   12 ; i  >   0 ; i -- )
 90          {
 91              _thisStrDate  =  year  +   " - "   +  i  +   " -01 " ;
 92              _thisTable  =  CreateWhereTableRow(_thisTable, Convert.ToDateTime(_thisStrDate).ToString( " yyyy-MM-dd " ),  " Year " );
 93          }
 94 
 95           string  _thisYear  =  _thisDt.Year.ToString();
 96           string  _thisMonth  =  _thisDt.Month.ToString();
 97           // 下面操作是将当前时间放到第一  其他时间顺便不改变
 98           string  strFYear  =  Convert.ToDateTime(_thisYear  +   " - "   +  _thisMonth  +   " -01 " ).ToString( " yyyy-MM-dd " );
 99 
100          DataRow _thisRow  =  _thisTable.NewRow();
101           foreach  (DataRow _row  in  _thisTable.Rows)
102          {
103               if  (_row[ " Date " ].ToString().Trim().Equals(strFYear))
104              {
105                  _thisRow[ " Date " =  _row[ " Date " ];
106                  _thisRow[ " Class " =  _row[ " Class " ];
107                  _thisTable.Rows.Remove(_row);
108                  _thisTable.Rows.InsertAt(_thisRow,  0 );
109                   break ;
110              }
111          }
112 
113          GetData(_thisTable);
114      }
115 
116 
117 
118 
119 

下面将放入常用日期处理类(当然这些常用函数大多数都是从网上搜索,希望大家一起完善此类。如有侵犯原版请指出)

日程处理类
  1    public   class  DateTimeUtils
  2      {
  3           // 当天与该周星期一相差的天数
  4           public   static   int  getModdayNum(System.DayOfWeek dw)
  5          {
  6               int  weeknow  =  Convert.ToInt32(dw);
  7               int  moddayNum  =  ( - 1 *  weeknow  +   1 ;
  8               return  moddayNum;
  9          }
 10 
 11           // 当天与该周星期日相差的天数
 12           public   static   int  getSundayNum(System.DayOfWeek dw)
 13          {
 14               int  weeknow  =  Convert.ToInt32(dw);
 15               int  sundayNum  =   7   -  weeknow;
 16               return  sundayNum;
 17          }
 18 
 19           // 该周星期一的日期
 20           public   static   string  getWeekMonday(System.DayOfWeek dw,  string  timeFormateStr)
 21          {
 22               int  weeknow  =  Convert.ToInt32(dw);
 23               int  moddayNum  =  ( - 1 *  weeknow  +   1 ;
 24               string  weekMonday  =  System.DateTime.Now.AddDays(moddayNum).Date.ToString(timeFormateStr);
 25               return  weekMonday;
 26          }
 27 
 28           // 该周星期日的日期
 29           public   static   string  getWeekSunday(System.DayOfWeek dw,  string  timeFormateStr)
 30          {
 31               int  weeknow  =  Convert.ToInt32(dw);
 32               int  sundayNum  =   7   -  weeknow;
 33               string  weekSunday  =  System.DateTime.Now.AddDays(sundayNum).Date.ToString(timeFormateStr);
 34               return  weekSunday;
 35          }
 36 
 37           // 本周是本年第几周
 38           public   static   int  weekNum(System.DayOfWeek dw)
 39          {
 40               int  weeknow  =  Convert.ToInt32(dw); // 今天星期几
 41               int  daydiff  =  ( - 1 *  (weeknow  +   1 ); // 今日与上周末的天数差
 42               int  days  =  System.DateTime.Now.AddDays(daydiff).DayOfYear; // 上周末是本年第几天
 43               int  weeks  =  days  /   7 ;
 44               if  (days  %   7   !=   0 )
 45              {
 46                  weeks ++ ;
 47              }
 48               return  (weeks  +   2 );
 49          }
 50 
 51           // 获取某年的第一天
 52           public   static   string  YearOneDay(DateTime argTime)
 53          {
 54               int  yearDay  =  argTime.DayOfYear;
 55              TimeSpan ts  =   new  TimeSpan(yearDay);
 56              argTime  =  argTime.Subtract(ts);
 57               return  argTime.ToShortDateString();
 58          }
 59 
 60 
 61           ///   <summary>
 62           ///  得到一年中的某周的起始日和截止日
 63           ///  年 nYear
 64           ///  周数 nNumWeek
 65           ///  周始 out dtWeekStart
 66           ///  周终 out dtWeekeEnd
 67           ///   </summary>
 68           ///   <param name="nYear"></param>
 69           ///   <param name="nNumWeek"></param>
 70           ///   <param name="dtWeekStart"></param>
 71           ///   <param name="dtWeekeEnd"></param>
 72           public   static   void  GetWeek( int  nYear,  int  nNumWeek,  out    DateTime dtWeekStart,  out    DateTime dtWeekeEnd)
 73          {
 74              DateTime dt  =   new  DateTime(nYear,  1 1 );
 75              dt  =  dt  +   new  TimeSpan((nNumWeek  -   1 *   7 0 0 0 );
 76               // dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday);
 77               // dtWeekeEnd = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1);
 78 
 79              dtWeekStart  =  dt.AddDays(Convert.ToDouble(( 0   -  Convert.ToInt16(dt.DayOfWeek))));
 80              dtWeekeEnd  =  dt.AddDays(Convert.ToDouble(( 6   -  Convert.ToInt16(dt.DayOfWeek))));
 81          }
 82 
 83 
 84           /**/
 85           ///   <summary>
 86           ///  求当前日期是一年的中第几周
 87           ///   </summary>
 88           ///   <param name="date"></param>
 89           ///   <returns></returns>
 90           public   static   int  WeekOfYear(DateTime curDay)
 91          {
 92               int  firstdayofweek  =  Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString()  +   " "   +   " 1-1  " ).DayOfWeek);
 93 
 94               int  days  =  curDay.DayOfYear;
 95               int  daysOutOneWeek  =  days  -  ( 7   -  firstdayofweek);
 96 
 97               if  (daysOutOneWeek  <=   0 )
 98              {
 99                   return   1 ;
100              }
101               else
102              {
103                   int  weeks  =  daysOutOneWeek  /   7 ;
104                   if  (daysOutOneWeek  %   7   !=   0 )
105                      weeks ++ ;
106                   return  weeks  +   1 ;
107              }
108          }
109 
110 
111           ///   <summary>
112           ///  取得某月的第一天
113           ///   </summary>
114           ///   <param name="datetime"> 要取得月份第一天的时间  </param>
115           ///   <returns>   </returns>
116           public   static  DateTime FirstDayOfMonth(DateTime datetime)
117          {
118               return  datetime.AddDays( 1   -  datetime.Day);
119          }
120 
121           /**/
122           ///   <summary>
123           ///  取得某月的最后一天
124           ///   </summary>
125           ///   <param name="datetime"> 要取得月份最后一天的时间  </param>
126           ///   <returns>   </returns>
127           public   static  DateTime LastDayOfMonth(DateTime datetime)
128          {
129               return  datetime.AddDays( 1   -  datetime.Day).AddMonths( 1 ).AddDays( - 1 );
130          }
131 
132           /**/
133           ///   <summary>
134           ///  取得上个月第一天
135           ///   </summary>
136           ///   <param name="datetime"> 要取得上个月第一天的当前时间  </param>
137           ///   <returns>   </returns>
138           public   static  DateTime FirstDayOfPreviousMonth(DateTime datetime)
139          {
140               return  datetime.AddDays( 1   -  datetime.Day).AddMonths( - 1 );
141          }
142 
143           /**/
144           ///   <summary>
145           ///  取得上个月的最后一天
146           ///   </summary>
147           ///   <param name="datetime"> 要取得上个月最后一天的当前时间  </param>
148           ///   <returns>   </returns>
149           public   static  DateTime LastDayOfPrdviousMonth(DateTime datetime)
150          {
151               return  datetime.AddDays( 1   -  datetime.Day).AddDays( - 1 );
152          }
153 
154           public   static   string  workZh( string  argName)
155          {
156               string  strName  =   string .Empty;
157               switch  (argName)
158              {
159                   case   " Saturday " :
160                      strName  =   " 星期六 " ;
161                       break ;
162                   case   " Sunday " :
163                      strName  =   " 星期日 " ;
164                       break ;
165                   case   " Friday " :
166                      strName  =   " 星期五 " ;
167                       break ;
168                   case   " Thursday " :
169                      strName  =   " 星期四 " ;
170                       break ;
171                   case   " Wednesday " :
172                      strName  =   " 星期三 " ;
173                       break ;
174                   case   " Tuesday " :
175                      strName  =   " 星期二 " ;
176                       break ;
177                   case   " Monday " :
178                      strName  =   " 星期一 " ;
179                       break ;
180              }
181               return  strName;
182          }
183 
184      }

 

 

你可能感兴趣的:(.net)