比如说我声明一个dt1;Datetime  dt1 = DateTime.Now; dt2取dt1向前推两个小时;DateTime dt2= dt1.AddHours(-2);
假设显示是月初,dt1 = 2012-10-01 00:12:00;如果按上面的方法,dt2 = 2012-09-30 22:12:00;有什么方法可以在跨月的时候让dt2= 2012-10-01 00:00:00,也就是说月不往前减。

解决方案 »

  1.   

    判断:如果减去的小时数大于d1这个月的总小时数,就返回这个月的第一天;//得到d1这个日期这个月的总小时数
    DateTime.Now.Subtract(
    new DateTime(DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.Ticks)
    ).TotalHours
      

  2.   

    这个好像不行,例如dt1=2012-10-02 00:12:00;而我需要dt2=2012-10-01 22:12:00;显然这是不行的。
      

  3.   

    DateTime dt1 = new DateTime(2012, 10, 1, 0, 12, 0);// DateTime.Now
    DateTime dt2 = dt1.AddHours(-2);
    if (dt2.Year < dt1.Year || dt2.Month < dt1.Month)
    {
        dt2 = new DateTime(dt1.Year, dt1.Month, 1);
    }
      

  4.   

    DateTime dt2= dt1.AddHours(-2);
    if (dt2.Month < dt1.Month)
    {
        dt2 =new DateTime(dt1.Year, dt1.Month,1, 0, 0, 0);
    }
      

  5.   

    DateTime dt2= dt1.AddHours(-2);
    if (dt2.Month != dt1.Month) //请别忽略了12月-1月的问题
    {
       dt2 =new DateTime(dt1.Year, dt1.Month,1, 0, 0, 0);
    }