关于java的日期处理

原创 2007年09月25日 11:22:00

       最近做关于报刊发行的项目,需要根据报刊的刊期种类(即为日报、周报还是月刊)计算该报刊的出版日期,让我好好熟悉了一下JAVA中的Calendar接口,把我研究两天的成果记录下来。

/** *//**
  * 计算日报的出版日期(ok)
  *
  * 
@param year
  *            年份
  * 
@return
  
*/

 
private static Set<?> getEveryday(String year)
 
...{
  Set
<Date> set = new TreeSet<Date>();
  Calendar cal 
= Calendar.getInstance();
  
// 设置日期为某年的第一天并放入集合
  cal.set(Integer.parseInt(year), 01);
  set.add(cal.getTime());

  
// 获取当年的最后一天

  
int endDay = cal.getActualMaximum(Calendar.DAY_OF_YEAR);

  
for (int day = 1; day < endDay; day++)
  
...{
   cal.add(Calendar.DAY_OF_YEAR, 
1);
   set.add(cal.getTime());
  }

  
return set;
 }

 

/** *//**
  * 出版日期中的数字代表日(ok)

  * 011020-1日、10日、20日
  *
  * 
@param year
  *            年份
  * 
@param publishDate
  *            出版日期
  * 
@param months
  *            月份数组
  * 
@return
  
*/

 
private static Set<?> digitsRepresentDay(String year, String publishDate,
   
int[] months)
 
...{
  Set
<Date> set = new TreeSet<Date>();
  
for (int i = 0; i < months.length; i++)
  
...{
   
int month = months[i];// 取得月份

   
// 拼接年月字符串,格式为:年份/月份/
   String yearAndMonthStr = year + "/" + month + "/";
   
for (int j = 0; j < publishDate.length(); j = j + 2)
   
...{
    
try
    
...{
     String day 
= StringUtils.substring(publishDate, j, j + 2);
     
// 若为2月份,且日大于28日,则取2月的最后一天
     if (month == 2 && Integer.parseInt(day) > 28)
     
...{
      Calendar cal 
= Calendar.getInstance();
      cal.set(Integer.parseInt(year), month 
- 11);
      day 
= String.valueOf(cal
        .getActualMaximum(Calendar.DAY_OF_MONTH));
     }

     Date date 
= DateUtils.parseDate(yearAndMonthStr + day,
       dateFormat);
     set.add(date);
    }

    
catch (ParseException e)
    
...{
     e.printStackTrace();
    }

   }

  }

  
return set;
 }

 

/** *//**
  * 出版日期中的数字代表星期几

  * 0-星期日、1-星期一、2-星期二、3-星期三、4-星期四、5-星期五、6-星期六
  *
  * 
@param year
  *            年份
  * 
@param publishWeek
  *            出版日期
  * 
@param weekStart
  *            开始星期数
  * 
@param weekInterval
  *            间隔的星期数
  * 
@return
  
*/

 
private static Set<?> digitsRepresentWeek(String year, String publishWeek,
   
int weekStart, int weekInterval)
 
...{
  Set
<Date> set = new TreeSet<Date>();
  Calendar cal 
= Calendar.getInstance();
  
int yearNumber = Integer.parseInt(year) ;  
  
for (int weekOfYear = weekStart; weekOfYear <= 53; weekOfYear += weekInterval)
  
...{
   cal.set(Calendar.YEAR, yearNumber);
// 设置年份
   cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);// 设置星期数
   for (int i = 0 ;i < publishWeek.length() ;i++)
   
...{
    
int dayOfWeek = Integer.parseInt(StringUtils.substring(publishWeek, i, i+1)) +1 ;
    cal.set(Calendar.DAY_OF_WEEK, dayOfWeek);
// 设置星期几
    
// 若计算出来的日期为该年度日期则设置到集合中
    if (cal.get(Calendar.YEAR) == yearNumber)
    
...{
     set.add(cal.getTime());
    }

   }

  }

  
return set;
 }

 

      这三个为主要的处理函数,其他都通过调用这三个函数来进行处理,如双月刊,单月出版,则

int[] months = { 1357911 };
return digitsRepresentDay(year, publishDay, months);

Java中Date和Calendar日期处理

  • 2014年04月26日 17:22
  • 10KB
  • 下载

java日期处理小结

  • 2012年12月07日 09:56
  • 72KB
  • 下载

java处理日期时间 相加减

JAVA处理日期时间常用方法:  1.java.util.Calendar  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR...

java(日期处理大全)

  • 2013年08月01日 12:01
  • 39KB
  • 下载

java日期处理

  • 2011年09月07日 14:56
  • 3KB
  • 下载

java处理日期工具类(一)

package util; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseExcep...

java日期处理工具类

  • 2013年12月13日 20:42
  • 196KB
  • 下载

java日期处理

  • 2013年07月10日 09:50
  • 32KB
  • 下载

Java获取视频的时长——日期时间处理

Problem: 如何通过Java获取视频的时长? 想通过Java来获取某文件夹(或多个文件夹)下的视频的总时长经过查询资料,发现可以通过JAVE实现:The JAVE (Java Audio V...

java日期处理

  • 2013年04月19日 20:07
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于java的日期处理
举报原因:
原因补充:

(最多只允许输入30个字)