2016-08-08 167 views
-2

最终日期值应该是类似于20080405的东西,但是这显示为20080229如何获得日期的平均值

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     DateTime dt1 = new DateTime(dt); 

     List<DateTime> arryDates = new List<DateTime>(); 

     Decimal[] avgdatetimevalues = { 20080229, 20080304, 20080304, 20080224 };//(Sum =61; sum/4 = 20080265) 
     // the final date value should be something like 20080405 but this is showing as 20080229 


     try 
     { 
      for(int i = 0; i< avgdatetimevalues.Length; i++) 
      { 
       arryDates.Add(ValueToDate(avgdatetimevalues[i])); 
      } 
      var cnt = arryDates.Count(); 
      double temp = 0D; 
      if (cnt > 0) 
      { 
       for (int i = 0; i < cnt; i++) 
       { 
        temp += (arryDates[i].Ticks/(double)cnt); 
       } 
       var average = new DateTime((long)temp); 

      } 

     } 
     catch (Exception ex) 
     { 
      throw; 
     } 


    } 
    public static DateTime ValueToDate(decimal dt) 
    { 
     DateTime dates; 
     DateTime.TryParseExact(dt.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dates); 
     return dates; 
    } 
} 
+1

你可以发布你试过的代码吗? – Isaac

+0

已添加我的实施代码并寻找最终日期值 – Joyfulkris

+0

某些日期(无论如何)的“平均”在所有日期之后如何下降? 2008-02-29加几个小时实际上听起来是正确的。另外,为什么使用小数而不是实际的DateTime对象? –

回答

-1

你如何包含该数据?

可以包含他们列表中,这样的事情:

List<decimal> values = new List<decimal> { 20080229, 20080304, 20080304, 20080224 }; 

,然后使用这样的事情:

Console.WriteLine(values.Average()); 

从你的列表中得到的所有数据的平均值。 这很容易:)

+0

这就是OP试图做的事情。它不工作,因为日期不是数字 - 2008年12月29日增加100返回20081329,这是一个毫无意义的价值。事实上,OP的尝试转换为蜱可能比添加任意数字更有意义 –