`
Riddick
  • 浏览: 640176 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

跟周相关的日期操作

    博客分类:
  • J2SE
 
阅读更多
package iprai.rid.test1;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class WeeksInYear {
	
    /**  
     * 返回指定年度的所有周。List中包含的是String[2]对象<br>  
     * string[0]本周的开始日期,string[1]是本周的结束日期。<br>  
     * 日期的格式为yyyy-MM-dd。<br>  
     * 每年的第一个周,必须包含星期一且是完整的七天。<br>  
     * 例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 <br>  
     * 星期一在哪一年,那么包含这个星期的周就是哪一年的周。<br>  
     * 例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。<br>  
     *   
     * @param year 格式 yyyy  ,必须大于1900年度 小于9999年   
     * @return   
     */  
    public static List<String[]> getWeeksByYear(final int year){   
        if(year<1900 || year >9999){   
            throw new NullPointerException("年度必须大于等于1900年小于等于9999年");   
        }   
        //实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期   
           
//      Calendar calendar = new GregorianCalendar();   
//      // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。   
//      calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一   
//      calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //每周从周一开始         
//      上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。          
//      calendar.setMinimalDaysInFirstWeek(7);  //设置每周最少为7天   
//      calendar.set(Calendar.YEAR, year); // 设置年度为指定的年   
  
//      //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周   
  
        int weeks = getWeekNumByYear(year);   
//      System.out.println(year+"共有"+weeks+"个周");   
        List<String[]> result = new ArrayList<String[]>(weeks);   
        for(int i=1;i<=weeks;i++){   
            String[] tempWeek = new String[2];   
            tempWeek[0] = getYearWeekFirstDay(year,i);   
            tempWeek[1] = getYearWeekEndDay (year,i);   
//或者使用下面的代码,不过发现效率更低               
//          tempWeek[0] = getDateAdd(firstWeekDay,(i-1)*7+0);   
//          tempWeek[1] = getDateAdd(firstWeekDay,(i-1)*7+6);              
            result.add(tempWeek);   
//          System.out.println(i+"="+tempWeek[0]+"_"+tempWeek[1]);   
        }   
        return result;   
    }   
  
    /**  
     * 计算指定年度共有多少个周。  
     * @param year 格式 yyyy  ,必须大于1900年度 小于9999年   
     * @return   
     */  
    public static int getWeekNumByYear(final int year){   
        if(year<1900 || year >9999){   
            throw new NullPointerException("年度必须大于等于1900年小于等于9999年");   
        }   
        int result = 52;//每年至少有52个周 ,最多有53个周。   
        String date = getYearWeekFirstDay(year,53);   
        if(date.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。   
            result = 53;   
        }   
        return result;   
    }   
       
  
    /**  
     * 计算某年某周的开始日期  
     * @param yearNum 格式 yyyy  ,必须大于1900年度 小于9999年   
     * @param weekNum 1到52或者53  
     * @return 日期,格式为yyyy-MM-dd  
     */  
    public static String getYearWeekFirstDay(int yearNum,int weekNum)  {   
        if(yearNum<1900 || yearNum >9999){   
            throw new NullPointerException("年度必须大于等于1900年小于等于9999年");   
        }   
         Calendar cal = Calendar.getInstance();   
         cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一   
         cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始   
//       上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。   
         cal.setMinimalDaysInFirstWeek(7);  //设置每周最少为7天        
         cal.set(Calendar.YEAR, yearNum);   
         cal.set(Calendar.WEEK_OF_YEAR, weekNum);   
           
         //分别取得当前日期的年、月、日   
         return getFormatDate(cal.getTime());   
    }   
  
    /**  
     * 计算某年某周的结束日期  
     * @param yearNum 格式 yyyy  ,必须大于1900年度 小于9999年   
     * @param weekNum 1到52或者53  
     * @return 日期,格式为yyyy-MM-dd  
     */  
    public static String getYearWeekEndDay(int yearNum,int weekNum)  {   
        if(yearNum<1900 || yearNum >9999){   
            throw new NullPointerException("年度必须大于等于1900年小于等于9999年");   
        }          
         Calendar cal = Calendar.getInstance();   
         cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一   
         cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//每周从周一开始   
//       上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。          
         cal.setMinimalDaysInFirstWeek(7);  //设置每周最少为7天            
         cal.set(Calendar.YEAR, yearNum);   
         cal.set(Calendar.WEEK_OF_YEAR, weekNum);   
            
         return getFormatDate(cal.getTime());   
    }
    
    public static String getFormatDate(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");      
        String sDate = sdf.format(date);      
        return sDate;
    } 
}

 

分享到:
评论

相关推荐

    易语言取本周开始结束日期

    在易语言中,开发人员可以方便地实现各种日期和时间相关的功能,例如获取当前日期、计算日期差等。在这个特定的场景中,我们关注的是“取本周开始结束日期”这一功能。 在易语言中,获取本周开始日期和结束日期涉及...

    js对日期操作

    Date.prototype.isLeapYear 判断闰年 ...Date.prototype.WeekNumOfYear 判断日期所在年的第几周 StringToDate 字符串转日期型 IsValidDate 验证日期有效性 CheckDateTime 完整日期时间检查 daysBetween 日期天数差

    C# DataCode 几年几周 转换日期 周一

    总的来说,理解和处理“几年几周”到具体日期的转换,是C#开发中的一个实用技能,涉及到日期操作、日历规则和自定义逻辑。这个知识点在日常的编程工作中非常常见,尤其是在需要对时间数据进行分析和报告时。

    周日历js插件,weeklyCalendar,只显示一周的日期

    《周日历js插件——weeklyCalendar:专为一周日期展示设计》 在现代Web开发中,日历插件是不可或缺的一部分,它们为用户提供了直观的时间管理方式。本文将深入探讨一个专注于一周日期显示的JavaScript插件——...

    C# DateTime 日期操作

    这些日期操作在日常开发中非常常见,如记录日志、统计报表或者处理时间相关的业务逻辑时都会用到。通过`DateTime`类提供的各种方法,我们可以轻松地进行日期的加减、比较以及格式化输出,满足各种需求。熟练掌握这些...

    mysql 日期函数相关操作

    这些函数用于对日期进行加减操作。自MySQL 3.23版本起,推荐使用`DATE_ADD()`和`DATE_SUB()`。 示例: ```sql SELECT DATE_ADD('2021-01-01', INTERVAL 1 DAY); ``` 返回值为`'2021-01-02'`。 以上只是MySQL日期...

    日期操作,转日期格式,加减日期,日期详解

    在IT行业中,日期操作是一项基础且重要的技能,广泛应用于各种应用程序和系统开发中。无论是记录系统日志,处理用户输入,还是进行数据分析,都离不开对日期的处理。本篇文章将详细探讨日期操作、转日期格式以及加减...

    JS实现日期上下周切换

    根据给定文件的信息,本文将深入探讨如何使用JavaScript来实现日期的上下周切换功能,并对相关的函数进行详细的解析...这些技术对于构建涉及日期操作的应用程序非常有用,尤其是那些需要显示日期选择器或时间轴的应用。

    判断当前日期是否在本月的最后一周内

    `TemporalAdjusters`类中的方法可以帮助我们进行复杂的日期调整操作。 1. **判断当前日期是否在本月的最后一周内**: 我们可以获取本月的第一天,然后加上一个月的天数,得到下个月的第一天。接着,我们可以通过`...

    易语言取本周开始结束日期源码

    在易语言中,日期和时间通常被表示为“日期/时间”类型的数据,它们可以通过内置的日期和时间函数进行操作。例如,“当前日期”函数可以获取系统当前的日期,而“当前时间”函数则用于获取当前的时间。 要获取本周...

    日期效果, 以 周 为 单 位,经过自己修改后,周.rar

    1. **日期计算**:开发者需要编写函数来获取当前周的起始日期和结束日期,这通常涉及到对日期对象的加减操作,并考虑到不同的周首日设定(如周一或周日作为一周的第一天)。 2. **日历布局**:创建一个HTML结构来...

    js计算两个日期相差几周

    在JavaScript中,日期对象(`Date`)提供了丰富的API来处理日期和时间相关的操作。日期对象可以用来获取当前日期和时间、解析特定格式的日期字符串,并执行日期之间的加减运算等。在本示例中,我们将通过创建日期...

    JAVA日期操作汇总

    ### JAVA日期操作汇总 本文将对Java中的日期操作进行详细解析,主要涵盖以下几个方面: 1. 计算某个月份的最大天数; 2. `Calendar`与`Date`之间的转换; 3. 日期格式化; 4. 获取指定日期所在的周序号及设置某...

    c++中的日期操作(包含CString类型的部分操作)

    自制C++中应用的日期操作类 操作天数的增减 操作月数的增减 操作年数的增减 获取日期所在月有几周 获取日期所在的周一 获取日期所在的周日 获取日期所在月的第几周周一 获取日期所在月的第几周周日 获取日期星期...

    计算日期是该年的第几周

    在编程领域,尤其是在数据分析或日历相关的应用中,计算日期是该年的第几周是一个常见的需求。这个任务在C#编程环境下,特别是在2013年及以后的版本中,可以通过利用.NET Framework提供的DateTime结构和相关方法来...

    易语言取本周开始结束日期源码.7z

    总之,易语言提供了一系列方便的日期和时间操作函数,使得开发者可以轻松地获取和处理各种日期相关的任务,如获取本周开始和结束日期。通过学习和掌握这些基础操作,你可以构建出更复杂的日期处理逻辑,满足各种实际...

    周 日期插件

    周日期插件允许用户快速查看并操作特定月份内的每周,这对于计划和安排周任务或者查看每周的工作进度非常有帮助。例如,用户可以轻松切换到任意一个月的某一周,查看该周的所有事件或者添加新的日程。 接下来,我们...

    C#关于日期月天数和一年有多少周及某年某周时间段的计算

    在C#编程语言中,处理日期和时间是常见的任务,特别是在开发涉及到日历、报表或者时间统计的应用程序时。本文将深入探讨如何计算一个月中的...理解和掌握这些基本操作,对于开发涉及日期和时间功能的应用程序至关重要。

    输入的年,周,星期求日期

    以上就是实现“输入的年,周,星期求日期”功能所涉及的JavaScript知识点,包括基础语法、日期操作、用户交互以及错误处理等方面。通过编写这样的程序,可以提升对JavaScript日期处理的理解和实际应用能力。

    获取当前日期下周的日期

    要获取本周的一周的日期,需要使用`Calendar`类的`add`方法不进行任何操作,因为当前日期已经是本周的一周的日期。 SimpleDateFormat类 `SimpleDateFormat`类是Java中用于格式化日期和时间的类。它提供了多种方法...

Global site tag (gtag.js) - Google Analytics