java中,在统计周的时候,默认一周是从周日开始的。但因为生活习惯或项目需求,我们经常需要改变一周的起始日期,这里说一下解决办法以及我陷入的误区。

一、 解决办法

使用Calendar类可以解决,这个类很灵活,功能很强大。
      举个例子:
      2020年1月1日是星期三,按照java的默认规则,2020年的第一个星期是:2019-12-29 星期日 至 2020-01-04 星期六。下面是日历:

      因为项目需求,我们需要改成周一为一周的起始,即:2020年的第一个星期是:2019-12-30 星期一 至 2020-01-05 星期日。
      代码如下:

import java.text.SimpleDateFormat;
import java.util.Calendar;public class test {public static void main(String[] args) {Calendar c = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");c.set(2020, 0, 1);System.out.println( sdf.format( c.getTime() ) );// 先看一下2020-01-01是一年中的第几周System.out.println( c.get( Calendar.WEEK_OF_YEAR) );System.out.println("--------------------------------- ");// 在不修改为周一的情况下,2019-11-29 周日 仍然是 2020年的第一周// 而 2020-01-05 周日 是2020年的第二周c.set(2019, 11, 29);System.out.println( c.get( Calendar.WEEK_OF_YEAR) ); // 输出1,第一周c.set(2020, 0, 5);System.out.println( c.get( Calendar.WEEK_OF_YEAR) ); // 输出2,第二周System.out.println("--------------------------------- ");// 修改周的起始日期,则周的起止变为: 周一到周日// 2019-11-29 周日,变为 2019年的最后1周; 2020-01-05 周日 是2020年的第1周c.setFirstDayOfWeek( Calendar.MONDAY );c.set(2019, 11, 29);System.out.println( c.get( Calendar.WEEK_OF_YEAR) ); // 输出52,2019年的最后一周c.set(2020, 0, 5);System.out.println( c.get( Calendar.WEEK_OF_YEAR) ); // 输出1,第一周}
}

输出:

2020-01-01
1
---------------------------------
1
2
---------------------------------
52
1

二、 我走进的误区

这个理解上还是比较容易的,但是有时候就防不住不小心钻进了牛角尖走不出来了,我就碰到了这种情况…
      在Calendar中,周日返回1,周一返回2,依次类推。而setFirstDayOfWeek()只影响WEEK_OF_YEAR。(未验证是否影响其他维度)
      而我不知道怎么想的,这么认为:因为一周的起始日是周日,所以周日返回1,周一返回2;那么当我执行 setFirstDayOfWeek( Calendar.MONDAY)以后,周日就应该返回7,而周一应该返回1…
      我想了好长时间,才走出来…不知道有没有跟我一样可爱的男孩子(๑• . •๑)

java程序中,如何设置周一为一周的开始?如何设置周一为一周的第一天? 或者说,如何理解java的setFirstDayOfWeek()方法?相关推荐

  1. Java 程序中的多线程

    在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应 ...

  2. 本地方法(JNI)——从java 程序中调用C函数

    [0]README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法--从java 程序中调用C函数 的基础知识 : 2) for source code, ...

  3. java内存漏洞_处理Java程序中的内存漏洞

    Java 程序中也有内存漏洞?当然有.与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题.在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞.您还有机会实践一下在您自己的 ...

  4. 使用comm在java程序中管理本地端口[回钦波:高级软件工程师]

    使用comm在java程序中管理本地端口 最近在做电信项目,遇到一些专业性的问题,在这里和大家一起分享下comm包下的类及如何使用等问题: 在java程序中,为了实现同本地系统的硬件端口(RS-232 ...

  5. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  6. Java程序中操作Word表格

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  7. java channel midi_为Java程序中添加播放MIDI音乐功能

    下载本文示例代码 Java在多媒体处理方面的确优势不大,但是我们在程序中有些时候又需要一些音乐做为点缀,如果播放的音乐是wav等波形音频文件,又挺大,所以背景音乐最好就是MIDI了,可是网上很多播放M ...

  8. 如何在Java程序中调用Python算法脚本,重点讲Demo,不墨迹理论

    原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将初步认识在Java程序中简单调用.py脚本文件的方法,附带入门的Demo实例讲解,更深入的理解还需要进一步学习. 最近 ...

  9. Java实现pdf转tex_使用Free Spire.PDF在Java程序中创建和转换PDF文件

    在这篇文章中,我将举例说明如何创建一个包含标题,段落,图像,编号列表和表格的简单的PDF文件,以及如何使用Free Spire.PDF将PDF转换为其他文件格式. 概述 Free Spire.PDF ...

  10. 在Java程序中创建和转换PDF文件

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: Codingqi123 来源: jianshu.com/p/db15232987 ...

最新文章

  1. 超级计算机 任务提交,vasp在超算中心的任务提交 - 第一原理 - 小木虫 - 学术 科研 互动社区...
  2. mysql floor报错_mysql的floor()报错注入方法详细分析
  3. 使用 python 的单人AI 扫雷游戏
  4. [羊城杯 2020]RRRRRRRSA
  5. 带你了解2020年全新【思科专家级认证CCIE】
  6. Redis事务中的watch机制-从实例入手学习
  7. 中奖名单 | 价值 199 的大数据平台研发课程幸运er
  8. CONCAT 联合查询
  9. intellij中运行后出现Hadoop is not in the classpath/dependencies
  10. 职教云自动签到网页版开源源码
  11. java正则出现次数_正则表达式(二)—匹配次数的正则
  12. mac上设置sudo不要密码
  13. js 封装websocket (包括心跳检测,断线重连等)
  14. HIVE 系列 (4) hive 内部表和外部表HQL查询统计
  15. 网站分析-网站流量分析
  16. MySQL超市会员管理系统_PHP+MYSQL药店会员管理系统的设计与实现
  17. 正面管教php_正面管教之PHP(家长帮助家长)
  18. 有没有人被向量空间、内积空间、欧式空间、希尔伯特空间、巴拿赫空间概念折磨的?
  19. 2012年第23周限时免费游戏应用点评
  20. Python的容器:列表、元组、字典与集合

热门文章

  1. Openwrt使用指定版本的toolchain工具链
  2. Pycharm中文字体变成繁体解决方法
  3. 文件_文件的上传及下载
  4. Android release apk 签名流程
  5. 网站卡顿,推荐这些免费使用加速工具的网站
  6. excel教程自学网_企业Office办公软件自学视频教程word/excel/ppt 2003 2013 2016全套
  7. 游戏中MD5加密的一些作用
  8. 华为交换机 查ip冲突_交换机如何解决IP地址冲突?
  9. 小马哥讲Spring核心编程思想 第十周 Spring资源管理
  10. 【转载】C++ Interesting卡常数