2016-08-08 7 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年2月29日プラス数時間は実際に正しいと思う。また、なぜ実際のDateTimeオブジェクトの代わりに小数点記号を使用していますか? –

答えて

-1

どのようにこのデータを保存しますか?このようなものを使用して、その後

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

そして:

あなたは、リストにこのようなものを、それらを含めることができます

Console.WriteLine(values.Average()); 

はあなたのリストからすべてのデータの平均値を取得します。 簡単です:)

+0

それはOPがやろうとしたことです。日付は数字ではないので動作しません - 20081229に100を追加すると、意味のない値20081329が返されます。実際、ダニに変換しようとするOPの試みは、おそらく任意の数字を追加するよりも意味があります –