Calendar类的getFirstDayOfWeek

getFirstDayOfWeek() 获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY

getMinimalDaysInFirstWeek

getMinimalDaysInFirstWeek() 获取一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则此方法将返回 1。

以上是JDK的解释,getFirstDayOfWeek还好理解,即,一周的第一天是周日,还是周一的问题。

getMinimalDaysInFirstWeek就显示比较难懂了。它的意思是指,一周里的天数。

来看个例子吧,比如我想得到,2017年的第3周的周一,是哪一天。好了,看代码吧。

package org.test.util;import java.text.SimpleDateFormat;
import java.util.Calendar;public class CalendarTest02 {static final String[] weeks = new String[] { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", };/*** @param args*/public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar cale = Calendar.getInstance();System.out.println("现在是" + sdf.format(cale.getTime()));System.out.println("getFirstDayOfWeek默认值-->" + cale.getFirstDayOfWeek());System.out.println("getFirstDayOfWeek默认值-->" + weeks[cale.getFirstDayOfWeek() - 1]);cale.set(Calendar.YEAR, 2017);cale.set(Calendar.WEEK_OF_YEAR, 3);cale.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(sdf.format(cale.getTime()));System.out.println("--------------------------我是分割线------------------------");/*** #####################################*/Calendar cale2 = Calendar.getInstance();System.out.println("现在是" + sdf.format(cale2.getTime()));cale2.setFirstDayOfWeek(Calendar.MONDAY); // 星期一System.out.println("getFirstDayOfWeek值-->" + weeks[cale2.getFirstDayOfWeek() - 1]);cale2.set(Calendar.YEAR, 2017);cale2.set(Calendar.WEEK_OF_YEAR, 3);cale2.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(sdf.format(cale2.getTime()));System.out.println("--------------------------我是分割线------------------------");/*** #####################################*/Calendar cale3 = Calendar.getInstance();System.out.println("现在是" + sdf.format(cale3.getTime()));cale3.setFirstDayOfWeek(Calendar.MONDAY); // 星期一cale3.setMinimalDaysInFirstWeek(7); // 7天为一周System.out.println("getFirstDayOfWeek值-->" + weeks[cale3.getFirstDayOfWeek() - 1]);cale3.set(Calendar.YEAR, 2017);cale3.set(Calendar.WEEK_OF_YEAR, 3);cale3.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(sdf.format(cale3.getTime()));}}

程序的输出为

现在是2017-03-30
getFirstDayOfWeek默认值-->1
getFirstDayOfWeek默认值-->星期天
2017-01-16
--------------------------我是分割线------------------------
现在是2017-03-30
getFirstDayOfWeek值-->星期一
2017-01-09
--------------------------我是分割线------------------------
现在是2017-03-30
getFirstDayOfWeek值-->星期一
2017-01-16

看到了吧,一会说是1月16号,一会说是1月9号。最后一段,是为了演示getMinimalDaysInFirstWeek、setMinimalDaysInFirstWeek。

第一部分的输出,

现在是2017-03-30
getFirstDayOfWeek默认值-->1
getFirstDayOfWeek默认值-->星期天
2017-01-16

很好的解释了一周当中的第一天的问题,看以看到默认为星期天。注意这里的1代表星期天,int类型代表的含义如下所示

    // Sun.(Sunday) 星期天public final static int SUNDAY = 1;// Mon.(Monday) 星期一public final static int MONDAY = 2;// Tue.(Tuesday) 星期二public final static int TUESDAY = 3;// Wed.(Wednesday) 星期三public final static int WEDNESDAY = 4;// Thu.(Thursday) 星期四public final static int THURSDAY = 5;// Fri.(Friday) 星期五public final static int FRIDAY = 6;// Sat.(Saturday) 星期六public final static int SATURDAY = 7;

好了,看到这里,想一下结果为什么是16号。其实很简单,脑子里可以想像下日历的样子,它是这个样子的

恩,不错,它就是window7里的样子。数一下呗,第3周,周一,呵呵,是16号了吧,没错吧。

再来看第二段输出

现在是2017-03-30
getFirstDayOfWeek值-->星期一
2017-01-09

呵呵,9号,这又是为什么呢?哦,原来代码里设置了一周的第一天是周一,看代码

cale2.setFirstDayOfWeek(Calendar.MONDAY); // 星期一

这个时候,日历的样子又变了,它是这个样子的

行了,数一下吧,第三周,周一,是不是9号了。

别急,还没有完了,再来看第三段输出

现在是2017-03-30
getFirstDayOfWeek值-->星期一
2017-01-16

呵呵,也是16号,为什么呢?

其实在看下面这张图的时候,已经能说明情况了

虽然第一周只有一天,但它却代表了一周。历害吧,哈哈。这未免有点太当浪费了吧,我们生活中,可是7天一周啊,有没有办法控制一下呢?当然有啊,看下面的代码

cale3.setMinimalDaysInFirstWeek(7); // 7天为一周

行了,这样的话,它就老老实实的7天一周了。不太理解的话,你可以看上图那张图,自己动手数三周,看是不是16号。

此文到此结束。

转载于:https://my.oschina.net/hnzmdpan/blog/871003

浅谈JAVA中Calendar类FirstDayOfWeek的问题相关推荐

  1. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  2. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  3. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

  4. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  5. file相对路径java_浅谈java 中文件的读取File、以及相对路径的问题

    一.对于java项目中文件的读取 1.使用system 或是 系统的properties对象 ①直接是使用 string relativelypath=system.getproperty(" ...

  6. java中的强制类型转换注意事项_浅谈Java中强制类型转换的问题

    为了更好的理解我们先看下面的例子: package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; im ...

  7. 浅谈Java中的栈和堆

    人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中? 这里浅谈Java中的栈和堆 首先,将结论写在前面,后面再用例子加以验证. Java的栈中存储以下类型数 ...

  8. java布尔类型比较器_浅谈Java中几种常见的比较器的实现方法

    在java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题. 通常对象之间的比较可以从两个方面去看: 第一个方面:对象的地址是否一样,也就是是否引用自同一个对象.这种方式可以直接使用& ...

  9. 浅谈java中的多态

    浅谈java中的多态 学习了java一年的时间,这里对java的多态进行了一个总结,如有错误希望可以指出, 首先java的多态分为编译时的多态和运行时的多态,其中编译时的多态就是方法的重载(前期绑定) ...

  10. java中单例的应用_浅谈Java中单例模式的几种应用

    目录 浅谈Java中单例模式的几种应用 第一种:懒汉式 第二种:饿汉式 第三种:双重检索式 第四种:注册登记式 第五种:内部类形式 浅谈Java中单例模式的几种应用 日常开发中,为了提高我们系统中对象 ...

最新文章

  1. 计算机控制里ddc什么缩略语,空调自动化术语和缩略语.doc
  2. 谈谈Tomcat连接器
  3. (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭
  4. C#几种在客户端跳转
  5. DevExpress v19.1新版亮点——WinForms篇(五)
  6. CentOS6.4安装gvim
  7. 搜狗输入法怎么切换为繁体_搜狗这次太良心了,必须强推这工具!
  8. 蓝桥练习题题解——作物杂交——Java
  9. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器
  10. pandas用均值填充nan_python – 如何用pandas中的滚动平均值填充nan值
  11. 排序算法笔记(Java)
  12. python可以处理哪些文件_4招小技巧,带你迅速提升Python文件处理的逼格
  13. AI 告别炒作,Java 0 增长,2021 技术路在何方?
  14. [ZigBee] 10、ZigBee之睡眠定时器
  15. 【GNN框架系列】DGL第二讲:使用Deep Graph Library实现GNN进行链接预测
  16. 想成功创业,你首先要有这样的思维
  17. ubuntu中eclipse无法识别android手机问题
  18. ANSYS公开课圆满落幕
  19. 使用grub启动虚拟软盘的方法
  20. python 批量替换当前.txt文本内容

热门文章

  1. 公司股权等比稀释是什么意思
  2. 文本蕴涵模型测试过程
  3. 如何查看当前域名的注册信息?
  4. 数显之家快讯:【SHIO世硕心语】2021年,中国最赚钱的时代到来!
  5. 解决百度推送not_same_site的问题
  6. WiFi覆盖下的生活 享受便利的同时 别忘记了安全
  7. 旅游网站竞品分析—携程旅行网VS去哪儿网(中)
  8. Unity3D 页游测评报告
  9. 数字传感器:新兴的应用
  10. 蛋白组笔记之-实践2 人溶菌酶蛋白二级结构的分析