前四周

时间:2018-03-29 13:29:38

标签: android performance date datetime

我的星期从星期五开始,从星期四结束,我得到当月的周数列表。 在我的代码中,每件事情都运行正常但是当前的四个星期,但我希望前四周不是本周的下周。

brand

问题

  1. 想要获得前四周,而不是当前的第四个月
  2. 输出

    <xsl:template match="cars">
        <xsl:copy>
            <xsl:apply-templates select="car[contains($brandsSelect, @brand)]" />
        </xsl:copy>
    </xsl:template>
    

1 个答案:

答案 0 :(得分:0)

一个不错的选择是在Android threeten backport中使用here's how to configure it。或者,如果您使用的API级别&gt; = 26,则只需使用 java.time 类。

此API使事情变得更容易。您可以使用WeekFields类来定义您的周(从星期五开始):

// week starts on Friday
WeekFields wf = WeekFields.of(DayOfWeek.FRIDAY, 1);

第一个参数(DayOfWeek.FRIDAY)是一周的第一天,第二个参数是第一周的天数。 Check the documentation了解有关这些字段如何影响班级行为的详细信息。

要获取当前日期,您可以使用LocalDate类:

// current date
LocalDate dt = LocalDate.now();

然后你创建一个减去一定周数的循环,并使用WeekFields来获取每周的第一天和最后一天。我还使用DateTimeFormatter将日期打印到输出的相同格式:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd-MMM", Locale.ENGLISH);
// get previous 4 weeks
for (int i = 4; i >= 1; i--) {
    LocalDate pastWeek = dt.minusWeeks(i);
    LocalDate startOfWeek = pastWeek.with(wf.dayOfWeek(), 1);
    LocalDate endOfWeek = pastWeek.with(wf.dayOfWeek(), 7);

    // you can add this String to your weekList
    String week = startOfWeek.format(fmt) + " to " + endOfWeek.format(fmt);
    System.out.println(week);
}

输出:

  

2月23日至3月1日   02年3月2日至3月8日   09年3月9日至3月15日   3月16日至3月22日