1. WEEK_OF_YEAR   一年中的第几周

由于西方的一周指的是:星期日-星期六,星期日是一周的第一天,星期六是一周的最后一天,

所以,使用 calendar.get(Calendar.WEEK_OF_YEAR) 时应该注意一周的开始应该是哪一天

如果一周的开始是星期一,那么可以进行如下操作:

        Calendar calendar=Calendar.getInstance();
calendar.set(2016,9,9); //2016-10-09 这一天是星期日
long week1=calendar.get(Calendar.WEEK_OF_YEAR);
calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置一周的第一天是星期几
calendar.set(2016,9,9); / / 一定要在calendar.setFirstDayOfWeek();方法后重新设置一遍日期,否则无效
long week2=calendar.get(Calendar.WEEK_OF_YEAR);

注意:一年有52个周,calendar.get(Calendar.WEEK_OF_YEAR);的取值范围是:“1-52”,所以当一年中最后的几天超过52周,进入第53周时,将以下一年的第一周来计算

(跨年问题:跨年的那个星期获取 “WEEK_OF_YEAR” 得到的结果总是“1”,)

        calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(2016,11,31); //2016-12-31
long week=calendar.get(Calendar.WEEK_OF_YEAR); //week= 1

2016-12-31 通过计算得到:1

 2. MONTH  月份

也是因为西方文化的原因,一年的第一个月是从“0”开始算起的,一年中12个月份分别是:“0-11”,12指的是下一年的一月份

        calendar.set(2016,12,9);
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String date=format.format(calendar.getTime());
获得的结果是:2017-01-09

所以    为 calendar 设置“月份(MONTH)”时需要 “-1”

通过 calendar 获取“月份(month)”时需要 “+1”

3.DAY_OF_WEEK  星期几

         String[] weeks = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};           
int index=calendar.get(Calendar.DAY_OF_WEEK);
String weekDay=weeks[index-1];

返回的是周几,取值为“1-7”  指的是  “星期日-星期六”,所以获取星期几时需要 “-1”

(这个值跟一周的第一天是星期几无关)

 4. SET() 方法

set(Calendar.DAY_OF_WEEK,Calendar.MONDAY):设置日期(calendar)为日期所在周的周一的日期(可以获取日期所在周的周一的日期)

        calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
String date=format.format(cal.getTime());

Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、的更多相关文章

  1. Java Calendar.set 方法设置时间的问题

    因项目需要,需要遍历一年中的其中几个月,获得每个月的用户数量.  变量有:开始时间--startDate,结束时间--endDate. 逻辑很简单:获取到开始时间的月份和结束时间的月份,然后得到月份差 ...

  2. Calendar使用方法

    Calendar类的静态方法getInstance()可以初始化一个日历对象: Calendar now = Calendar.getInstance(); 可以使用下面三个方法把日历定到任何一个时间 ...

  3. Calendar add 方法 和set方法

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c = Calendar. ...

  4. Calendar.set方法获取前一天的当前时刻

    获取前几天的当前时刻的时间方法 Calendar cal = Calendar.getInstance(); Date date = new Date();// 获取当前时间 cal.setTime( ...

  5. Java基础知识强化95:Calendar类之Calendar类的add()和set()方法

    1. Calendar的add()和set()方法: public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作 public ...

  6. java Calendar类得到每个月的周末是几号的工具方法

    public static List getWeekendInMonth(int year, int month) { List list = new ArrayList(); Calendar ca ...

  7. WPF中增加Month Calendar月历控件

    XAML代码:(这里使用了codeproject.com网站上的一个Dll,你可以在这里下载它:http://www.codeproject.com/cs/miscctrl/MonthCalendar ...

  8. java日期类型转换总结date timestamp calendar string

    用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式.         Timestamp转化为String: S ...

  9. 【转】Date类学习总结(Calendar Date 字符串 相互转换 格式化)

    原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Cale ...

随机推荐

  1. oracle:case when 语句的区间用法

    在练习case when 语句时,碰到一个例子,结果答案根本就不对,语法就通不过,开始想着是不是case 只能是一个固定的取值,毕竟例子内给的都是case是个固定的值,后来网上查了好久才发现还有区间的 ...

  2. vi基本命令

    http://www.cnblogs.com/younggun/p/3190820.html 要记得经常练习

  3. [翻译] 为什么Uber的数据库从Postgres 切换到 MySql

    Uber工程师团队发布了一个重要的博客文章:他们的数据库从Postgres从移动到MySQL.毫不夸张地说,阅读这篇文章是一种享受,特别是因为他们提到这些细节:磁盘格式和那对他们2个数据库的表现的影响 ...

  4. 并发工具类:CountDownLatch、CyclicBarrier、Semaphore

    在多线程的场景下,有些并发流程需要人为来控制,在JDK的并发包里提供了几个并发工具类:CountDownLatch.CyclicBarrier.Semaphore. 一.CountDownLatch ...

  5. [转] java集合详解

    结合框架体系应该最重要的是如何灵活利用三种接口,set,map,list,他们如何遍历,各有什么特征,怎么样去处理,这是关键,在这个基础上再去掌握在什么场合用什么类型的接口.比如说list和set,s ...

  6. C#.Net 中的 new 的几个用法

    之前面试的时候,有人问过我这个问题,当时自己只记得两种.后来上msdn看了下,发现有三种,第三种用法基本没怎么用过 这里先贴出来: 三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约 ...

  7. Eclipse下编写的web项目部署到tomcat下

    之前都是用myeclipse编写web项目,编写好然后在myclipse上配置的tomcat下的webapps文件想项目复制到其他tomcat下就能运行了. 最近学习jquery,将eclipse编写 ...

  8. Java 可变参数列表

    1.可变参数列表的简单实现 当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表.在以前的Java代码中,可以使用Object数组来实现这样的功能.因为,所有的类都是直接或间接继承于Objec ...

  9. 自定义view

    这两篇文章不可错过,是最靠谱的基础文献.总的来说,如果想完全定制,就继承与于View类:如果只是在原有控件基础上拓展,那就继承TextView.Button或者LinearLayout等.接下来,就以 ...

  10. php学习01