Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、

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”

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

时间: 2024-11-05 17:25:48

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

Java.util.Calendar.getInstance()方法实例

java.util.Calendar.getInstance() 使用目前的时区和语言环境的方法得到一个日历. 声明 以下是java.util.Calendar.getInstance()方法的声明 public static Calendar getInstance() 参数 NA 返回值 该方法返回一个日历Calendar. 异常 NA 例子 下面的示例演示java.util.Calendar.getInstance()方法的用法. package com.yiibai; import ja

java基础系列--Calendar类

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7136575.html 1.Calendar概述 Java官方推荐使用Calendar来替换Date的使用,Calendar与Date之间可以自由的进行转换,转换的纽带是time,使用Calendar的getTime()方法可以得到一个Date类型的对象,这个对象底层是使用Date的第二个带Long型参数的构造器创建的,这个Long型参数是Calendar中的time字段中保存的值,这个t

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

用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式. Timestamp转化为String: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒 Timestamp now = new Timestamp(System.currentTimeMillis());//获取系统当前时间 String

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

原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,year); //year 为 int time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0           

Date、Calendar类

 时间和日期处理 在程序中,某个固定的时间代表的都是一个时间点,也就是一个时间的瞬间,例如2009年3月8日15点50分0秒,在实际的应用中,经常需要对于两个时间进行比较或计算时间之间的差值,这些功能在Java语言中都可以很方便的实现. 在Java语言中,时间的表达单位是毫秒.也就是说,Java语言中的时间处理可以精确到毫秒. 在Java语言中,表达时间的方式有两种:   a.绝对时间.以直观的形式来表达某个时间点,例如2009年10月10号0点0分0秒.使用这种形式表达时间,使用起来比较直观,

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

JAVA的Date类与Calendar类

Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1.使用Date类代表当前系统时间 Date d = new Date(); System.out.println(d); 使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下: Sun Ma

Android获取系统时间方法详解

Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar.getInstance()函数获取一个实例,再为该实例设定时区(中国的时区为GMT+8:00),最后使用Calendar.get()函数获取时间的具体信息,如年,月,日,小时,分,秒,星期几. package com.hzhi.time_example; import java.util.Cale

JAVA Calendar具体解释

(在文章的最后,将会介绍Date类,假设有兴趣,能够直接翻到最后去阅读) 到底什么是一个 Calendar 呢?中文的翻译就是日历,那我们立马能够想到我们生活中有阳(公)历.阴(农)历之分.它们的差别在哪呢? 比方有:月份的定义 - 阳`(公)历 一年12 个月,每一个月的天数各不同:阴(农)历,每一个月固定28天每周的第一天 - 阳(公)历星期日是第一天:阴(农)历,星期一是第一天 实际上,在历史上有着很多种纪元的方法.它们的差异实在太大了,比方说一个人的生日是"八月八日" 那么一种