java程序中,如何设置周一为一周的开始?如何设置周一为一周的第一天? 或者说,如何理解java的setFirstDayOfWeek()方法?
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()方法?相关推荐
- Java 程序中的多线程
在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应 ...
- 本地方法(JNI)——从java 程序中调用C函数
[0]README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法--从java 程序中调用C函数 的基础知识 : 2) for source code, ...
- java内存漏洞_处理Java程序中的内存漏洞
Java 程序中也有内存漏洞?当然有.与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题.在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞.您还有机会实践一下在您自己的 ...
- 使用comm在java程序中管理本地端口[回钦波:高级软件工程师]
使用comm在java程序中管理本地端口 最近在做电信项目,遇到一些专业性的问题,在这里和大家一起分享下comm包下的类及如何使用等问题: 在java程序中,为了实现同本地系统的硬件端口(RS-232 ...
- mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...
如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...
- Java程序中操作Word表格
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- java channel midi_为Java程序中添加播放MIDI音乐功能
下载本文示例代码 Java在多媒体处理方面的确优势不大,但是我们在程序中有些时候又需要一些音乐做为点缀,如果播放的音乐是wav等波形音频文件,又挺大,所以背景音乐最好就是MIDI了,可是网上很多播放M ...
- 如何在Java程序中调用Python算法脚本,重点讲Demo,不墨迹理论
原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将初步认识在Java程序中简单调用.py脚本文件的方法,附带入门的Demo实例讲解,更深入的理解还需要进一步学习. 最近 ...
- Java实现pdf转tex_使用Free Spire.PDF在Java程序中创建和转换PDF文件
在这篇文章中,我将举例说明如何创建一个包含标题,段落,图像,编号列表和表格的简单的PDF文件,以及如何使用Free Spire.PDF将PDF转换为其他文件格式. 概述 Free Spire.PDF ...
- 在Java程序中创建和转换PDF文件
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: Codingqi123 来源: jianshu.com/p/db15232987 ...
最新文章
- 超级计算机 任务提交,vasp在超算中心的任务提交 - 第一原理 - 小木虫 - 学术 科研 互动社区...
- mysql floor报错_mysql的floor()报错注入方法详细分析
- 使用 python 的单人AI 扫雷游戏
- [羊城杯 2020]RRRRRRRSA
- 带你了解2020年全新【思科专家级认证CCIE】
- Redis事务中的watch机制-从实例入手学习
- 中奖名单 | 价值 199 的大数据平台研发课程幸运er
- CONCAT 联合查询
- intellij中运行后出现Hadoop is not in the classpath/dependencies
- 职教云自动签到网页版开源源码
- java正则出现次数_正则表达式(二)—匹配次数的正则
- mac上设置sudo不要密码
- js 封装websocket (包括心跳检测,断线重连等)
- HIVE 系列 (4) hive 内部表和外部表HQL查询统计
- 网站分析-网站流量分析
- MySQL超市会员管理系统_PHP+MYSQL药店会员管理系统的设计与实现
- 正面管教php_正面管教之PHP(家长帮助家长)
- 有没有人被向量空间、内积空间、欧式空间、希尔伯特空间、巴拿赫空间概念折磨的?
- 2012年第23周限时免费游戏应用点评
- Python的容器:列表、元组、字典与集合
热门文章
- Openwrt使用指定版本的toolchain工具链
- Pycharm中文字体变成繁体解决方法
- 文件_文件的上传及下载
- Android release apk 签名流程
- 网站卡顿,推荐这些免费使用加速工具的网站
- excel教程自学网_企业Office办公软件自学视频教程word/excel/ppt 2003 2013 2016全套
- 游戏中MD5加密的一些作用
- 华为交换机 查ip冲突_交换机如何解决IP地址冲突?
- 小马哥讲Spring核心编程思想 第十周 Spring资源管理
- 【转载】C++ Interesting卡常数