2016-11-13 11 views
0

たとえば、開始日が05-09-2016(dd-mm-yyyy)、 、終了日が09-01です-2017asp.net/c#の2つの開始日と終了日から週番号を取得する方法

と私は週に1 と呼ばれるように、最後の週は18

はEDITであることを9月5日から始まる週を持つようにしたい:私は日付を与え、これらの二つの開始日と終了日からされなければなりませんそれは私に週番号を与えるべきです。たとえば。私が09-11-2016に入ると、それは私に週を与えるべきです6

そして私はハードコーディングをしないでこれを達成しなければなりません。

今uptil ...何かアドバイスをください私はこの

DateTime date = new DateTime(2016, 09, 05 ); 
     DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; 
     Calendar cal = dfi.Calendar; 

     Console.WriteLine((cal.GetWeekOfYear(date, dfi.CalendarWeekRule, dfi.FirstDayOfWeek))-36); 

を書かれているが、新しい年の開始時に、これは動作しませんか?

これを:私たちはJavaScriptを使用して似たようなacheiveできるかどう も、それはあなたが2つの日付の間の週数を計算する必要が見えます#

+0

開始は9月5日である場合には、どのようにすることができます9月11日に書きました6週間後ですか? – RobG

答えて

1

cをasp.net/にacheivableない場合は、以下のように試してみてください伝えます期待通りに18を印刷します。

DateTime date1 = new DateTime(2016, 09, 05); 
    DateTime date2 = new DateTime(2017, 01, 09); 
    var weeks = Math.Ceil((date2 - date1).TotalDays/7); 

    Console.WriteLine(weeks); 
+0

申し訳ありませんが、あなたが何をしているのかよく分かりません。あなたは週の日か週の番号を欲しいですか?週番号の場合は2つの日付の間、または月または年の初めから。正確な情報を入力してください。私は今あなたの更新された例と混同されています。例えば、11-09-2016と入力すると6週になるはずです。この6つの手段は何ですか? – Aruna

+0

はい、それは私のコードがやっていることです。あなたが実行すると、同じことが与えられます。必要であれば "Math.Ceil"を追加することもできます。また、これはあなたが言ったように新年にも役立ちます。あなたは複数の日付でそれを実行することによってコードの何が間違っているのかアドバイスできますか? – Aruna

+0

最初の日付の年の開始からx週を計算し、次に2番目の日付のyを計算し、新しい年が来るときにそれを減算することを期待します。代わりに、両方の日付を引いてそれらの間の週を計算すると、必要なものが正確に表示されます。この行を "var weeks = Math.Ceil((date2 - date1).TotalDays/7);"に変更することもできます。 – Aruna

0

は、私はあなたイテレータでそれを行うと、あなたは日付のリストで持っているデータを集計する方法の例...

  public class CurrentWeek { 
       public int Count{get;set;} 
       public DateTime Date{get;set;} 
      } 

      var totalDays = (int)(toDate - fromDate).TotalDays; 
      while ((int)(toDate - fromDate).TotalDays > 0) 
      { 
       CurrentWeek currentWeek = new CurrentWeek(); 
       currentWeek.Date = fromDate; 
       // here i collect the data from my list of dates 
       var rslt = listOpen.Where(x => x.Date >= fromDate && x.Date <= fromDate.AddDays(7)).Select(y => y.Count).Sum(); 
       currentWeek.Count = rslt; 

       rtrn.Add(currentWeek); 
       fromDate = fromDate.AddDays(7); 
      } 
関連する問題