• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

EdithZone .NET Blog

O,My God!
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

获取当前年月日的 n 个月前是 哪年哪月那日!

问题来源:实现一个查询,要查询系统当天的前1周,前2周,前1个月,前2个月,前3个月,前6个月的数据!
显然,当天的日期和时间可以用
System.DateTime.Now,那么前几周,前几个月是哪年的几月几号怎么确定呢?
 查了System.DateTime有一个很好的方法

public DateTime Subtract(
   TimeSpan value );
这个可以得到当前日期的几天之前是哪年的几月几号!
So good!

那么前1周,前2周,就用7天前,14天前就搞定了!
接下来月份怎么处理呢?一个月是多少天,是不确定的,与年有紧密关系,所以
Microsoft
想的非常周到,提供了一个优秀的方法,可以知道某年某月有多少天:
public static int DaysInMonth(
   int year,
   int month
);
那么现在只要确定一个月前是多少天以前就可以了!呵呵,思考了一下,写了个递归算法,基本上已经实现了需求!
欢迎大家提出更好的算法,或者方法、渠道!

/**//**//**//// <summary>
        
/// 得到某年某月的前几个月是多少天算法
        
/// </summary>
        
/// <param name="iYear">当前的年份</param>
        
/// <param name="iMonth">当前的月份</param>
        
/// <param name="iTimes">前n个月</param>

        private void GetMonthDay( int iYear, int iMonth, int iTimes)
        
{
            
// 条件非法,不需要计算
            if(iTimes <= 0)
                
return;

            
if(iMonth == 1)
            
{
                iMonth 
= 12;
                iYear 
= iYear - 1;
            }

            
else
            
{
                iMonth 
= iMonth - 1;
                iYear 
= iYear;
            }

            
if(iTimes == 1)
            
{                
                iPassDays 
+= System.DateTime.DaysInMonth(iYear,iMonth);
            }

            
else
            
{                
                iPassDays 
+= System.DateTime.DaysInMonth(iYear,iMonth);
                GetMonthDay(iYear,iMonth,iTimes
-1);                
            }
            
        }
 

转自:http://www.cnblogs.com/koffer/archive/2004/11/10/62453.html

转自:

posted on 2005-04-02 17:08  Hotdog  阅读(494)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3