2017-10-04 7 views
0

私は単純なタイムシートを作ろうとしています。私は2日(finalDayEndinitialDayEnd)の月間のみを表示しようとしています。HTML/Javaでシンプルなタイムシートを作成する

私はすでにセッション変数で日付を取得しています。

enter image description here

例:のはinitialDayEndは、2017年4月10日とfinalDayEndあるとしましょう10月、11月、2017年12月と1月2018年1月1日

マイ月間タグが表示されるはずです

です この場合、10月に1を、4月に2018年1月に01で終了するテーブルの曜日を開始する必要があります。

どのようにして月と年を2つの日付の間で取得し、initialDayとfinalDayの終わりから始めることができますか?

<div class="row" style="margin-top: 30px;"> 
    <div class="tab-content"> 
     <div id="Individual" class="tab-pane fade in active"> 
      <div class="col-md-6"> 
       <div class="row"> 
        <% 
         String initialDayEnd = session.getAttribute("initialDayEnd").toString(); 
         String finalDayEnd = session.getAttribute("finalDayEnd").toString(); 
        %> 
        <div class="dropdown"> 
         <label>Month:</label> 
         <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">January 
         <span class="caret"></span></button> 
         <ul class="dropdown-menu"> 
          <li><a href="#">January</a></li> 
          <li><a href="#">February</a></li> 
          <li><a href="#">March</a></li> 
         </ul> 
        </div> 
       </div> 
       <div class="row" style="margin-top: 10px;"> 
        <div class="dropdown"> 
         <label>Year:</label> 
         <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">2017 
          <span class="caret"></span></button> 
         <ul class="dropdown-menu"> 
          <li><a href="#">2017</a></li> 
          <li><a href="#">2018</a></li> 
          <li><a href="#">2019</a></li> 
         </ul> 
        </div> 
       </div> 
      </div> 
      <div class="col-md-6"> 

      </div> 
     </div> 
    </div> 
    </div> 
    <div class="row" style="margin-top: 30px;"> 
      <div class="table-responsive"> 
       <% 
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
        SimpleDateFormat ft = new SimpleDateFormat("EEEE", Locale.ENGLISH); 
        LocalDate localDate = LocalDate.of(2017,1,19); 
        int days = localDate.lengthOfMonth(); 
        Date date; 
       %> 
       <table class="table"> 
        <thead> 
        <tr> 
         <th class="text-center">#</th> 
         <th class="text-center">Day</th> 
         <th class="text-center">Number of Clients</th> 
         <th class="text-center"></th> 
        </tr> 
        </thead> 
        <tbody> 
        <% 
         for(int day = 1;day<=days;day++) { 
          date = sdf.parse(day+"/10/2017"); 
        %> 
        <tr class="text-center"> 
         <td><%=day%></td> 
         <td><%=ft.format(date)%></td> 
         <td><input name="amountOfClients[]" type="number"></td> 
         <td> 
          <% 
           if(day == 1) { 
          %> 
          <input type="checkbox" <%--<%= environment.isPaused() ? "checked='checked'" : ""%>--%> data-toggle="toggle" data-size="small" value="Repeat"> 
          <label> Repeat for All?</label> 
          <% 
           } 
          %> 
         </td> 
        </tr> 
        <% 
         } 
        %> 
        </tbody> 
       </table> 
      </div> 
     </div> 
+0

''月と年を2つの日付の間で取得するにはどうすればいいですか? ' - 私はこれらの文字列の日付値を 'LocalDate'や' YearMonth'のようなものに変換することから始めます。 。いったん文字列ではなく適切な日付値になると、簡単に計算を実行できます。たとえば、2番目の日付を渡した後の最初の日付の終わりにループを作成し、1つの月ごとに繰り返しを追加し、その月の名前を配列に記録することができます。ループの終わりに、配列に月名のリストが含まれているはずです。 – David

+0

@Davidそれほど役に立たなかった。 –

+0

さて、あなたは何を試しましたか、何がうまくいかないのですか?私が提案したアプローチが何らかの形でうまくいかない場合、どのように失敗するのでしょうか?あなた自身のアプローチはどのように失敗するのですか? – David

答えて

0

あなたが最初にすべきことは、それは非常に簡単任意の数学を作ってあげる、実際の日付値にこれらの文字列値を変換しています。このような何か:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); 
Date startDate = format.parse(initialDayEnd); 
Date endDate = format.parse(finalDayEnd); 

そこから、あなたは月ごとにインクリメントし、ArrayListに、月の名前を追加し、次への1日からのループを使用することができます。簡単な例として、このような何か:その後

ArrayList<String> months = new ArrayList<String>(); 
while (startDate.before(endDate)) { 
    months.add(new DateFormatSymbols().getMonths()[startDate.getMonth()]); 
    startDate.setMonth(startDate.getMonth() + 1); 
} 

monthsリストは、開始日と終了日の間のすべての月の名前を持っているでしょう。

(注:。。getMonth()setMonth()に私が取得しています非推奨の警告は私のJava固有の知識が少し日付であると私は不慣れだ、Calendarオブジェクトを使用して更新されたバージョンがあるように見えますが、概念はまだあります

+0

がほぼ完璧ですが、開始日と終了日が同じ月にある場合は出力を取得しません –

+0

@ xaa:そうじゃない?私がやります。あなたの終了日は、そのテストの開始日の前にどういうふうにありますか? – David

+0

私は2017-10-04 initialと2017-10-06でテストしました。 –

関連する問題