-
JAVA Calendar 获取年份与周数5
输入一个字符日期,通过Calendar 获取 到日期对应的周数及 周所在的年份
特别是跨年的情况:
先贴代码
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cl = Calendar.getInstance();
cl.setTime(sdf.parse("2012-12-31"));
int week = cl.get(Calendar.WEEK_OF_YEAR);
System.out.println(week);
结果是 1 这个没有疑问.
这个1 明显是2013年的第一周 我怎样也能获取到 2013呢
直接通过 cl.ge(Calendar.YEAR); 得到2012
想要的结果其实 是:
输入2012-12-31
能得到 是 2013 年 的第 1 周2012年12月28日 17:58
3个答案 按时间排序 按投票排序
-
采纳的答案
这是Calendar的内部机制的问题,根据正常的逻辑,它是没有错的,你想得到2013年第1周,应该去做一下判断,因为2012-12-31确实是2012年,它不是2013年,所以要做一下处理,得到周数之后,可以根据7天前的周数来做一下对比,如果7天前的周数小于当日周数,则表示为正常周数和正常年份,如果7天前的周数大于当日周数,表示当日在年尾,并且当日周数被计算在下一年,此时要在得到的年份是+1,下边是代码,你自己看看理解一下吧。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cl = Calendar.getInstance(); cl.setTime(sdf.parse("2012-12-31")); int week = cl.get(Calendar.WEEK_OF_YEAR); System.out.println(week); cl.add(Calendar.DAY_OF_MONTH, -7); int year = cl.get(Calendar.YEAR); if(week<cl.get(Calendar.WEEK_OF_YEAR)){ year+=1; } System.out.println(year+"年第"+week+"周");
2012年12月29日 08:39
-
int year = 0;
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
int weekNo = calendar.get(Calendar.WEEK_OF_YEAR);
int year1 = calendar.get(Calendar.YEAR);
calendar.add(Calendar.DAY_OF_MONTH, -7);
int year2 = calendar.get(Calendar.YEAR);
int weekBefore = calendar.get(Calendar.WEEK_OF_YEAR);
if(weekNo<weekBefore){
year2+=1;
year = year2;
}else{
year = year1;
}
System.out.println(year+"年第"+weekNo+"周");2019年1月18日 17:25
-
这个week_of_year和两个值有关。
firstDayOfWeek: 用周几作为一周的第一天,我们默认的是SUNDAY,德国的是周三(这个和本地化有关)
minimalDaysInFirstWeek: 一年的第一周用几号开始算。System.out.println(cl.getFirstDayOfWeek()); //SUNDAY System.out.println(cl.getMinimalDaysInFirstWeek());//1
打印出来的结果是从周日开始做为1周的开始,新年的第一天从1号开始。
2012年最后几天的日历如下:
周日 1 2 3 4 5 6
30号 31 1[size=medium][/size] 2 3 4 5
新年的第一天是1号(minimalDaysInFirstWeek)在周二,一周必须由7天组成,又是从周日(firstDayOfWeek)开始算起,所以30,31都属于第1周就等到了楼主说的结果。
要跟这个原理可以分别修改这两个属性可以提到不同的结果。
方法1:cl.setFirstDayOfWeek(Calendar.TUESDAY);
修改每周从周二开始,而周2正好是1号,所以12-31的week值为53
方法2:cl.setMinimalDaysInFirstWeek(6);
修改新年从6号开始算起,6号正好是周日,一周的开始,所以6号前的7天的week值都是53.2012年12月28日 22:50
相关推荐
获取指定年份和周数的最后一天的方法与获取第一周类似,只是在计算时需要增加6天以得到周日的日期。 示例代码如下: ```java public static Date getLastDayOfWeek(int year, int week) { Calendar c = new ...
- `while (calendar.get(Calendar.YEAR) )`:循环条件为当前年份小于目标年份加一,确保能够获取完整一年的数据。 - `calendar.set(Calendar.WEEK_OF_YEAR, i++);`:设置当前周数为`i`,并自增。 - `calendar.set...
文档中展示了一个名为WeekUtil的Java类,以及其中包含的几个静态方法,这些方法主要用于获取日期的周信息,包括一年中的周数、一周的第一天和最后一天等。接下来,将详细介绍这些知识点: ### Java日期处理类 在...
- 计算一年中的第几星期是几号:设置Calendar的年份、周数和星期,然后获取`getTime()`得到对应的日期。 5. add()和roll()的用法 - `add()`方法:用于增加或减少日期字段的值,会跨月或跨年。例如,`cal.add...
这段代码首先设置了 `Calendar` 的年份和周数,并将星期一设为一周的开始,然后获取该周的第一天和最后一天的日期。 #### 方法二:使用 `java.time` 包下的类 ```java import java.time.DayOfWeek; import java....
- 使用 `Calendar.getInstance().get(Calendar.YEAR)` 获取当前年份。 - 使用 `c_begin.set(year, month, day)` 和 `c_end.set(year, month, day)` 设置起始日期和结束日期。 - 利用 `c_begin.add(Calendar.DAY_...
为了获取指定年份的第一周的第一天(通常是星期一),可以先创建一个`Calendar`实例,并设置相应的年份、周数和星期几,然后通过`getTime()`方法获取对应的`Date`对象。 #### 示例代码 ```java SimpleDateFormat df...
在Java中,`Calendar`类提供了非常丰富的日期与时间操作功能。例如,可以通过`Calendar`设置特定的年月日: ```java Calendar time = Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR, year); // ...
在Java中,`Calendar`类提供了获取特定月份最大天数的功能。这在处理日期逻辑时非常有用,例如判断一个月份有多少天。 ```java Calendar time = Calendar.getInstance(); time.clear(); // 清除所有字段,设置为...
然后通过`get(Calendar.WEEK_OF_YEAR)`获取周数。 6. **获取某天所在周的第一天** `getFirstDayOfWeek`方法返回给定日期所在周的第一天。通过`Calendar`的`setFirstDayOfWeek`方法,我们可以定义一周的起始日。...
#### 一、Java日期与时间元素表示法 Java 提供了丰富的日期和时间处理功能,其中 `SimpleDateFormat` 类用于格式化和解析日期字符串。下面是一些常用的时间元素及其对应的表示方式: - **G**:Era 标记符(例如 AD...
本文将详细介绍如何利用Java语言中的`Calendar`类和`Date`类,并结合单例设计模式来实现对当前年份周数的计算及其对应时间段的列举。 #### 单例模式简介 单例模式是一种常用的软件设计模式,在整个应用中确保某个类...
在Java编程中,有时我们需要计算特定月份的天数和...总之,Java的`Calendar`类提供了一种灵活的方式来处理日期和时间,通过调用其方法,我们可以轻松地计算出一个月的天数和周数,这对于许多实际应用场景都非常有用。
- 计算一年中的第几星期是几号:首先设置年份、周数,然后设置 `DAY_OF_WEEK` 为一周的第一天(通常是周一,即 `Calendar.MONDAY`),调用 `getTime()` 得到具体日期。 5. `add()` 和 `roll()` 方法的用法: - `...
获取当前日期是Java中最基本的操作之一,可以通过`Calendar`类或`java.util.Date`类实现。下面是一个简单的例子,展示了如何获取当前的日期和时间,并将其格式化为特定的字符串格式: ```java public String ...
4. **获取一个月的最后一天**:在Java中,可以使用`Calendar`类来获取给定月份的最后一天。通过实例化`Calendar`,设置日期,然后调用`add`方法增加一天,再检查是否超过月份的界限,从而确定最后一天。 5. **判断...
它获取当前日期的`Calendar`对象,然后提取`WEEK_OF_YEAR`和`YEAR`字段,将周数前加上零(如果只有一位数字)并与年份组合。这个函数可以帮助创建按周索引的数据记录或者报告。 此外,文档中还提到了一个未完成的...
结果是一个字符串形式的组合,包括年份和周数,方便用于数据库索引或其他标识符。 **示例代码片段**: ```java public static String getSeqWeek() { // 代码省略... } ``` 在报表生成、数据分析等领域,此功能...
`Calendar`是Java的标准日期和时间API,它提供了获取和设置日期、月份、年份等各种属性的方法。要得到某月的第一天是星期几,我们可以创建一个`Calendar`实例,设置到指定的月份和年份,然后调用`get(Calendar.DAY_...