- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
完全重复: How to get all dates of sundays in a particular year in Java
<小时/>int year = 2009;
Calendar cal = new GregorianCalendar(year, Calendar.JANUARY, 1);
for (int i = 0, inc = 1; i < 366 && cal.get(Calendar.YEAR) == year; i+=inc) {
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
// this is a sunday
cal.add(Calendar.DAY_OF_MONTH, 7);
inc = 7;
} else {
cal.add(Calendar.DAY_OF_MONTH, 1);
}
}
在 Miles D given code ,我正在获取从第一个月的第二个星期日到明年的第一个星期日的所有星期日的日期。实际上我只是在寻找特定的年份,而且都是星期日的日期,请您再次看到它......
例如,我只需要 2009 年从 2009 年 1 月到 2009 年 12 月的所有星期日日期
最佳答案
编程新手?好啦,我们一起看一下代码吧!
我看到的第一件事是循环内的条件:
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
这会检查日历cal
中存储的当前日期是否有DAY_OF_WEEK
,即SUNDAY
。如果是,它会做一件事,如果不是,它会做另一件事。
现在我们知道循环的“大脑”正在寻找什么,让我们看看循环的声明:
for (int i = 0, inc = 1; i < 366 && cal.get(Calendar.YEAR) == year; i+=inc)
for
循环分为三个部分:初始化、条件和“增量”。初始化仅在循环开始运行之前运行一次:
int i = 0, inc = 1
正如我确信你所知,它创建了两个变量:i
和inc
。它将 i
设置为 0,将 inc
设置为 1。
在运行循环的每次迭代之前都会检查循环的条件。它是:
i < 366 && cal.get(Calendar.YEAR) == year
它检查i
是否仍然小于366,并且存储在cal
中的日期是否具有YEAR
year
。实际上,这确保了我们仍处于开始时的同一年。
for 的最后一部分是这样的:
i+=inc
它将 inc
的值添加到 i
的值中,并将其存储在 i
中。
那么到目前为止我们在循环中得到了什么?
i
为 0 和 inc
为 1i
小于公历年的长度(闰年为 366),cal
中的日期仍与 year
中的年份相同。i
由 inc
推进让我们再看一下循环体:
if (condition_that_checks_if_it_is_a_sunday) {
// this is a sunday
cal.add(Calendar.DAY_OF_MONTH, 7);
inc = 7;
} else {
cal.add(Calendar.DAY_OF_MONTH, 1);
}
如您所见,如果是星期日,会发生两件事:inc
设置为 7,并且 7 DAY_OF_MONTH
被add
ed到cal
。这意味着在循环的下一次迭代中,表达式 i+=inc
将表示 i+=7
而不是 i+=1
,即当 inc
为 1 时执行(就像初始化完成时一样。)
如果不是星期日,则将单个 DAY_OF_WEEK
添加到 cal
中。
那么循环体内有什么?
cal
是否是星期日
cal
提前 7 天。不仅如此,还要让 i
继续前进 7!cal
不是周日,则将其提前到一周的第二天,并让 i
继续提前 1。换句话说,循环将从 cal
的初始值开始,然后将 cal
向前移动一天,直到找到星期日。一旦执行此操作,cal
就会一次向前移动 7 天,直到超过 366 天,或者直到 cal
进入另一年!
因此,通过(咳咳)简要检查上面的代码,我们得出结论,它实际上并没有“得到”一年中的星期日。它只是对它们进行迭代,然后由您添加代码来实际处理它找到的星期日。
现在我们已经一起检查了代码,我确信这样做很简单!实际上只需添加几行即可。您只需添加一行,每次循环进入它“知道”cal
是星期日的部分时,[在此插入您想要的任何内容]。
很简单,不是吗?
关于java - 如何获取特定年份的所有星期日日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/601380/
我正在完成一项让我难堪好几天的学校作业。任务是使用 View (VAvailableGolfers) 将与从组合框中选择的给定事件/年份无关的高尔夫球手填充到列表框中。以下是表中的数据: 那么,表单上
给定一年和那年的某一天,我如何获得完整的日期?例如:60/2014 = 2014 年 3 月 1 日 和 61/2016 = 2016 年 3 月 1 日 注释:-年和日可以作为单独的参数传递。 -结
我正在使用 ExtJS 3,当我想为日期选择器选择日期时,我只能设置日期和月份(通过左/右箭头)。月/年面板会放下来,但很快就会消失,因此无法选择它。这是最能描述该行为的桌面记录:http://fli
我正在尝试获取用于在 div 中显示当前月份和年份的 jquery 或 java 脚本代码,但目前还不能。我的意思是我想以这种格式显示当前的月份和年份:October 2012 这样每个月我都不需要编
我有这段代码可以从数据库中获取一个字段: $end_date=$row1['end_date']; 如果我打印它,它会给我这样的信息:25-09-2012我需要的是获取月份值、年份和日期。类似于: $
我有两个格式如下的数据集: df1 #> Artist Album Year #> 1 Beatles Sgt. Pepper's 1967 #>
我使用 jQuery 验证插件和 maskedInput 插件对输入进行了自定义日期和时间验证。 有没有办法在自定义验证中进行验证以防止输入大于当前年份的年份? 我的代码: $("#date").ma
我在 xml 解析方面没有经验,所以也许我写的一些东西对某些人来说看起来很愚蠢,也许我的一些术语不太正确。请原谅。 我开发了一个Android应用程序,它需要解析来自YR.no的天气数据。 。该组织提
我需要当前年份,月份和日期为3个不同的变量。下面的代码给出了日期时间 val now = Calendar.getInstance().getTime() 2016年9月29日星期四18:27:38
在模态对话框中使用日期选择器,请不要在 Firefox 19.0.2 中使用更改月/年下拉列表,请参阅: http://jsfiddle.net/469zV/2/ HTML
我希望日期输入在年份有 4 位数字后停止输入。我尝试使用 HTML 中的 min 和 max 组件,但它仍然允许您键入删除第一个数字。参见示例 1。 请参阅示例 2 以了解可以输入超过 4 位数字的年
因此不同是基于唯一的月/年,而不仅仅是一个不同的月份(所以我希望 2011 年 1 月和 2012 年 1 月是不同的) // Test set of data List Compl
在 Programming in the Key of C# 中,作者给出了一个示例(附源代码),说明如何将日期(年、月、日 -- 数字)打包为 32 位整数。在示例中,作者将信息打包如下: int
这里我有一个任务,如果我写这样的代码,年份应该像 1947 年到 2016 年一样绑定(bind)在 DropdownList 中 1947 2016 拍了一整天 最佳答案 例如,
显然,我的 SQL 不是最好的,但我想做的是通过查找条目中的最大年份和月份来获取数据库中的最新日期。现在我有: select max(Month), max(Year) from posts wher
我试图弄清楚是否有任何 ID 发生在任何早年(即 dfo 中的 Duplicate 列)。如果是这样,我想将该行标记为重复行并包括 ID 首次出现的年份(即 Year_Duplicate)。 我确实有
我已经从 df 中提取了列列表,这些列是字符串类型,如下所示:1999-1(如 1999 年第一个月)。 我想删除 2000 年之前的所有列,因此我提取了列列表并使用列表理解来检查字符串的第一个字符是
日期时间是什么时候?我的 DateTimePicker 控件的源更改为 null,我想选择另一个日期,日历下拉列表默认为最后选择的月份和年份。 我正在为 DOB 使用 DateTimePicker,因
我正在获取系统当前日期并尝试在 TextView 中显示它。 尝试下面的代码后 private OnClickListener listener1 = new OnClickListener() {
我想使用 knockoutJS 库验证年份。我面临的问题是,当用户输入错误的年份时,不会对年份进行验证。以下是年份错误的情况。 (01/01/12 becomes 01/01/0012) (01/0
我是一名优秀的程序员,十分优秀!