我最近遇到了一个任务,我必须在一个日期范围内获得所有星期五.我写了一小段代码,很惊讶看到一些奇怪的行为.

以下是我的代码:

public class Friday {

public static void main(String[]args){

String start = "01/01/2009";

String end = "12/09/2013";

String[] startTokens = start.split("/");

String[] endTokens = end.split("/");

Calendar startCal = new GregorianCalendar(Integer.parseInt(startTokens[2]),Integer.parseInt(startTokens[1])-1,Integer.parseInt(startTokens[0]));

Calendar endCal = new GregorianCalendar(Integer.parseInt(endTokens[2]),Integer.parseInt(endTokens[1])-1, Integer.parseInt(endTokens[0]));

int startYear = Integer.parseInt(startTokens[2]);

int endYear = Integer.parseInt(endTokens[2]);

int startWeek = startCal.get(Calendar.WEEK_OF_YEAR);

int endWeek = endCal.get(Calendar.WEEK_OF_YEAR);

Calendar cal = new GregorianCalendar();

cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);

// cal.setMinimalDaysInFirstWeek(7);

ArrayList main = new ArrayList();

while(startYear <= endYear ){

cal.set(Calendar.YEAR, startYear);

System.out.println(cal.getMinimalDaysInFirstWeek());

if(startYear == endYear){

main.addAll(getFridays(startWeek, endWeek, cal));

}

else{

main.addAll(getFridays(startWeek, 52, cal));

startWeek = 1;

}

startYear =startYear +1;

}

for(String s: main){

System.err.println(s);

}

}

public static ArrayList getFridays(int startWeek, int endWeek, Calendar cal){

ArrayList fridays = new ArrayList();

while(startWeek <= endWeek){

cal.set(Calendar.WEEK_OF_YEAR, startWeek);

fridays.add(cal.getTime().toString());

startWeek = startWeek+1;

}

return fridays;

}

}

现在,当我运行代码时,我发现2011年的星期五不见了.经过一些调试和在线浏览,我发现Calendar.WEEK_OF_YEAR是特定于语言环境的,我必须使用setMinimalDaysInFirstWeek(7)来修复它.

所以取消注释上面代码中的相关行.

根据我的理解,现在每年的第一周应该从一周的整周开始.

例如2010年1月1日是星期五.但它不应该出现在结果中,因为我将其配置为处理该周从1月3日开始.但是现在我仍然把1月1日视为星期五

我很困惑.有人可以解释为什么会这样吗?

这些Stackoverflow文章对我有所帮助:

Why dec 31 2010 returns 1 as week of year?

Understanding java.util.Calendar WEEK_OF_YEAR

java获取下周一整周的日期_获取Java中日期范围内的所有星期五相关推荐

  1. java获取下周一整周的日期_当前日期得到本周的开始和结束日期

    /// /// 本周起止时间 /// /// /// private string weekrange(System.DateTime dt) { int weeknow = Convert.ToIn ...

  2. java获取明天的日期_使用java获取昨日的日期,今日的日期,明日的日期

    private String tomorrowDate;//明日日期 private String todayDate;//明日日期 private String yesterdayDate;//明日 ...

  3. java 判断当前时间是否为节假日_浅谈Java8日期时间处理

    各位小伙伴们,我们又见面了,今天峰哥跟大家分享一下java8的全新日期时间处理API.在Java8之前,我们使用的日期时间是: java.util.Datejava.util.Calendar jav ...

  4. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  5. java 查询日期行列转换_java中日期格式的转换和应用

    java中主要有3个类用于日期格式转换    DateFormat .SimpleDateFormat.Calendar SimpleDateFormat函数的继承关系: java.lang.Obje ...

  6. jdbc读取mysql时分秒yyyy-mm-dd hh:_[转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  7. java传统的项目有哪些内容_请问java全套内容都有什么呢?

    我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...

  8. java web 应用技术与案例教程_《Java Web应用开发技术与案例教程》怎么样_目录_pdf在线阅读 - 课课家教育...

    出版说明 前言 第1章 java Web应用开发技术概述 1.1 Java Web应用开发技术简介 1.1.1 Java Web应用 1.1.2 Java Web应用开发技术 1.2 Java Web ...

  9. JAVA的Map怎么判断为空_检查Java中的HashMap是否为空

    使用该isEmpty()方法检查HashMap是否为空.让我们首先创建HashMap-HashMap hm = new HashMap(); 现在,添加一些元素-hm.put("Bag&qu ...

最新文章

  1. python制作解压工具_使用python制作一个解压缩软件
  2. python3安装步骤
  3. Spark Streaming(三)zookeepe搭建
  4. 医学图像处理期末复习(三)
  5. 大道至简伪代码(第一个博客)
  6. 前端学习(1796):前端调试之html/css介绍
  7. 10个趣味的物理与化学动图欣赏,看过直称神奇!
  8. aop判断方法是否执行成功_判断图中是否有环的三种方法
  9. 致程序猿:专业课老师没教的,都在这8本书里了
  10. 关于Google Video
  11. 【kafka】kafka UnknownProducerIdException raised broker locate producer metadata producerId
  12. 利用计算机进行信息检索,用计算机进行情报检索属于计算机应用中的
  13. Leetcode 278.第一个错误的版本
  14. python 的for与while 的i改变
  15. Redhat7.3修改密码
  16. 很多网友反映QQ被盗
  17. python 模拟触屏_python一次简单游戏辅助的经历(截取屏幕模拟键盘)
  18. android虚线边框_Android自定义View之绘制虚线
  19. android o壁纸,超实用壁纸应用大合集 - 你想要的壁纸在这里统统都能找到! - Android 应用 - 【最美应用】...
  20. mongoengine fields详解

热门文章

  1. Serilog Tutorial
  2. 一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go
  3. rest_framework06:自动生成路由\action使用\认证
  4. 关于jQuery.query.js 取参数的一个小问题
  5. 【ArcGIS遇上Python】ArcGIS批量处理栅格影像(NDVI)归一化完整案例代码
  6. 【ArcGIS遇上Python】从入门到精通系列之第二章:ArcGIS Python基本语法基础速递
  7. ArcGIS 10.7如何获取矢量多边形所有折点的坐标(平面坐标和经纬度坐标)?
  8. SQL Server 2005 cmd工具的使用
  9. C#趣味程序---三色球问题
  10. 【Envi风暴】ENVI中求两幅遥感影像的相关性(相关系数)