用HTML / Java创建一个简单的时间表

时间:2017-10-04 10:51:05

标签: java html

我正在尝试制作一个简单的时间表而且卡住了。我只想显示2天(finalDayEndinitialDayEnd)之间的月份。

我已通过会话变量获取日期。

enter image description here

示例:我们说initialDayEnd是04/10/2017而finalDayEnd是01/01/2018

我的月份标记应显示2017年10月,11月,12月和2018年1月。 在这种情况下,我需要在10月开始表格,而不是10月份的1天和2018年1月的01日结束。

如何获取2个日期之间的月份和年份以及如何从initialDay的最初日期和结束日期开始。

<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>

1 个答案:

答案 0 :(得分:0)

您应该做的第一件事是将这些字符串值转换为实际日期值,这将使任何数学更多更容易。像这样:

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

从那里你可以使用从一个日期到下一个日期的循环,按月递增,并将月份的名称添加到ArrayList。举个简单的例子:

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()上收到了弃用警告。似乎有使用Calendar对象的更新版本,我对此不熟悉。我的Java特定知识有点陈旧,但无论使用何种对象,概念仍然相同。)