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. TVM在ARM GPU上优化移动深度学习
  2. CString之GetBuffer、ReleaseBuffer
  3. 计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲
  4. 连载三:RobotFramework+Selenium+Jenkins分布式构建
  5. 2021年中国电动扫地机市场趋势报告、技术动态创新及2027年市场预测
  6. Java常用JSON库FastJson,Gson,Jackson,Json-lib性能及特点比较,常用工具方法
  7. 关于raw_input()和sys.stdin.readline()的区别
  8. Wonderware Historian 2017安装,资料
  9. ArGIS Engine专题(8)之利用GP监督分类最大似然法实现根据矢量样本和影像提取植被类型
  10. 扩展内存条 兼容性问题 双通道
  11. MTK移植大全(参考)建议收藏!
  12. 如何使用Loadrunner12在win10系统 最新版本谷歌浏览器录制脚本
  13. 如何卸载重装Adobe Acrobat
  14. HMI-66-【MeterDisplay for Arm Linux】液晶仪表Arm Linxu迁移
  15. 瑞星卡卡升级出现错误:kmon.dll.zip,错误代码:0x0/0x0(chech)
  16. Shopee本土店如何做,各国家站点市场分析及热销产品
  17. html samp如何转成块,HTML code|kbd|samp|var程序标签应用说明-立地货
  18. d610网络计算机,尼康D610,10年来我见过的真心值得买的全幅单反
  19. 和时间做朋友,在Mate40发布会现场感知“华为精神”
  20. 2021-05-19 ASP.NET Core笔试题 请问对EFCore有了解吗?

热门文章

  1. 查询-SPJ练习2参考答案
  2. 纬度渐长率算法C语言,关于纬度渐长率.pdf
  3. 专业图形卡测试软件,专业卡能玩游戏么?实测很是意外
  4. dnw驱动更新,支持全系统(xp,win7,win8/win10)
  5. 今天给大家分享下收集的一些文案:日常文案系列合集,收藏备用
  6. 进入旅游营销时代,携程有什么“大招”?
  7. 2022东南大学网安916考研经验贴
  8. 人力资源领域RPA的应用场景
  9. Java开发工程师大厂面试常见问题总结(应届生版)
  10. 【机密】从此没有难做的floorplan(数字后端设计实现floorplan篇)