• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
helong
博客园    首页    新随笔    联系   管理    订阅  订阅

JAVA 日期操作

    /**
* 获取指定日期的前或者后N天
*
@param date <B>指定的日期格式:yyyy-MM-dd</B>
*
@param day <B>天数,输入正整数就是后 N天 输入负数则是前N天</B>
*
@return <B>String[]</B>
*/
public static String[] getDateDay(String date,int day,String fmtStr){
int count=Math.abs(day)-1;
String[] str
= new String[Math.abs(day)];

SimpleDateFormat tempSdf
=new SimpleDateFormat(fmtStr);
try {
Date dt
=sdfYMD.parse(date);
String source
=tempSdf.format(dt);
if(day<0){
str[count]
=source;
}
else{
str[
0]=source;
}
Calendar c
= Calendar.getInstance();
c.setTime(dt);
for(int i=1;i<Math.abs(day);i++){
if(day<0){
c.add(Calendar.DATE,
-1);
Date d1
=c.getTime();
c.setTime(d1);
str[count
-i]=tempSdf.format(d1);
}
else{
c.add(Calendar.DATE,
1);
Date d1
=c.getTime();
c.setTime(d1);
str[i]
=tempSdf.format(d1);
}
}
}
catch (ParseException e) {
e.printStackTrace();
}
return str;
}

/**
* 根据指定的日期获取前或者后的N个月
*
@param date <B>日期指定格式:yyyy-MM</B>
*
@param month<B>月数,输入正整数就是后 N月 输入负数则是前N月</B>
*
@param pattern 返回的格式
*
@return <B>String[]</B>
*/
public static String[] getMonths(String date,int month,String pattern){
String[] str
= new String[Math.abs(month)];
int count=Math.abs(month)-1;
SimpleDateFormat tempSdf
= new SimpleDateFormat(pattern);
try {
Date dt
= sdfYM.parse(date);
String source
=tempSdf.format(dt);
if(month<0){
str[count]
=source;
}
else{
str[
0]=source;
}
Calendar c
= Calendar.getInstance();
c.setTime(dt);
for(int i=1;i<Math.abs(month);i++){
if(month<0){
c.add(Calendar.MONTH,
-1);
Date d1
=c.getTime();
c.setTime(d1);
str[count
-i]=tempSdf.format(d1);
}
else{
c.add(Calendar.MONTH,
1);
Date d1
=c.getTime();
c.setTime(d1);
str[i]
=tempSdf.format(d1);
}

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


/**
* 根据指定的年获得前N年或者后N年
*
@param date <B>日期格式:yyyy</B>
*
@param year <B>年数 输入正整数就是后N年、输入负整数就是前N年</B>
*
@return <B>String[]</B>
*/
public static String[] getYear(String date,int year){
String[] str
= new String[Math.abs(year)];
int count=Math.abs(year)-1;
try {
Date dt
= sdfYM.parse(date.trim()+"-01");

if(year<0){
str[count]
=sdfYM.format(dt).substring(0,sdfYM.format(dt).indexOf("-"));
}
else{
str[
0]=sdfYM.format(dt).substring(0,sdfYM.format(dt).indexOf("-"));
}
Calendar c
= Calendar.getInstance();
c.setTime(dt);

for(int i=1;i<Math.abs(year);i++){
if(year<0){
c.add(Calendar.YEAR,
-1);
Date d1
=c.getTime();
c.setTime(d1);
str[count
-i]=sdfYM.format(d1).substring(0,sdfYM.format(d1).indexOf("-"));
}
else{
c.add(Calendar.YEAR,
1);
Date d1
=c.getTime();
c.setTime(d1);
str[i]
=sdfYM.format(d1).substring(0,sdfYM.format(d1).indexOf("-"));
}

}
}
catch (ParseException e) {
e.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
return str;
}

/**
* 根据指定的日期获取前或者后的N个月
*
@param date <B>日期指定格式:yyyy-MM</B>
*
@param month<B>月数,输入正整数就是后 N月 输入负数则是前N月</B>
*
@param pattern 返回的格式
*
@return <B>String</B>
*/
public static String getMonth(String date,int month,String pattern){
SimpleDateFormat tempSdf
= new SimpleDateFormat(pattern);
String str
="";
try {
Date dt
=sdfYM.parse(date);
Calendar c
=Calendar.getInstance();
c.setTime(dt);
for(int i=1;i<Math.abs(month);){
if(month<0){
c.add(Calendar.MONTH,
-1);
}
else{
c.add(Calendar.MONTH,
1);
}
Date d1
=c.getTime();
i
++;
if(i==Math.abs(month)){
str
=tempSdf.format(d1);
}
c.setTime(d1);
}
}
catch (ParseException e) {
e.printStackTrace();
}
return str;
}

/**
* 获取指定日期的前或者后N天
*
@param date <B>指定的日期格式:yyyy-MM-dd</B>
*
@param day <B>天数,输入正整数就是后 N天 输入负数则是前N天</B>
*
@return <B> String</B>
*/
public static String getDay(String date,int day,String pattern){
SimpleDateFormat tempSdf
= new SimpleDateFormat(pattern);
String str
= "";
try {
Date dt
=sdfYMD.parse(date);
Calendar c
= Calendar.getInstance();
c.setTime(dt);
for(int i=0;i<Math.abs(day);){
if(day<0){
c.add(Calendar.DATE,
-1);
}
else{
c.add(Calendar.DATE,
1);
}
i
++;
if(i==Math.abs(day)){
Date d1
=c.getTime();
str
=tempSdf.format(d1);
}
}
}
catch (ParseException e) {
e.printStackTrace();
}
return str;
}


/**
* 根据传入的年和季度以及范围,获得所在范围的数组记录
*
@param date 年 如 :2011
*
@param quarter 季度 如: 3
*
@param scop 季度范围 输入负整数获得前N个记录 、输入正整数获得后N个记录
*
@param isCN 返回的结果是否中文
*
@return 2011年二季度, 2011年三季度, 2011年四季度, 2012年一季度, 2012年二季度, 2012年三季度, 2012年四季度, 2013年一季度, 2013年二季度, 2013年三季度
* <br>或<br>
*[2011-04-01,2011-06-30, 2011-07-01,2011-09-30, 2011-10-01,2011-12-31, 2012-01-01,2012-03-31, 2012-04-01,2012-06-30, 2012-07-01,2012-09-30, 2012-10-01,2012-12-31, 2013-01-01,2013-03-31, 2013-04-01,2013-06-30, 2013-07-01,2013-09-30]
*/
public static String[] getQuarterCN(String date,int quarter,int scop,boolean isCN){
String[] strs
= new String[Math.abs(scop)];
int count=Math.abs(scop)-1;
try {
Date dt
=sdfYM.parse(date+"-01");
Calendar c
= Calendar.getInstance();
String source
= sdfYM.format(dt).substring(0,sdfYM.format(dt).indexOf("-"));
if(scop<0){
if(isCN){
strs[count]
=converStr(quarter,source);
}
else{
strs[count]
=converDate(quarter,source);
}
}
else{
if(isCN){
strs[
0]=converStr(quarter,source);
}
else{
strs[
0]=converDate(quarter,source);
}
}
int i=1;
while(i<Math.abs(scop)){

if(scop<0){
quarter
--;
if(quarter<=0){
quarter
=4;
c.add(Calendar.YEAR,
-1);
Date dl
=c.getTime();
source
=sdfYM.format(dl).substring(0,sdfYM.format(dl).indexOf("-"));
}
if(isCN){
strs[count
-i]=converStr(quarter,source);
}
else{
strs[count
-i]=converDate(quarter,source);
}

}
else{
quarter
++;
if(quarter>4){
quarter
=1;
c.add(Calendar.YEAR,
1);
Date dl
=c.getTime();
source
=sdfYM.format(dl).substring(0,sdfYM.format(dl).indexOf("-"));
}
if(isCN){
strs[i]
=converStr(quarter,source);
}
else{
strs[i]
=converDate(quarter,source);
}

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

return strs;
}


private static String converStr(int number,String year){
String st
="";
switch (number) {
case 1:
st
=year+"年一季度";
break;
case 2:
st
=year+"年二季度";
break;
case 3:
st
=year+"年三季度";
break;
case 4:
st
=year+"年四季度";
break;
}
return st;
}

public static String converDate(int number,String year){
String str
="";
switch(number){
case 1:
str
=getMonthFirstDay(year+"-01-01")+","+getMonthLastDay(year+"-03-01");
break;
case 2:
str
=getMonthFirstDay(year+"-04-01")+","+getMonthLastDay(year+"-06-01");
break;
case 3:
str
=getMonthFirstDay(year+"-07-01")+","+getMonthLastDay(year+"-09-01");
break;
case 4:
str
=getMonthFirstDay(year+"-10-01")+","+getMonthLastDay(year+"-12-01");
break;
}
return str;

}

/**
* 获得一个月的最后一天
*
@param data 参数格式:yyyy-MM-dd
*
@return
*/
public static String getMonthLastDay(String data){
String dateSource
="";
try {
Date dt
= sdfYMD.parse(data);
Calendar c
=Calendar.getInstance();
c.setTime(dt);
int maxDate= c.getActualMaximum(Calendar.DATE);
c.set(Calendar.DATE, maxDate);
Date dl
=c.getTime();
dateSource
=sdfYMD.format(dl);
}
catch (ParseException e) {
e.printStackTrace();
}

return dateSource;
}

/**
* 获得一个月第一天
*
@param date 参数格式:yyyy-MM-dd
*
@return
*/
public static String getMonthFirstDay(String date ){
String dataSource
="";
try {
Date dt
= sdfYMD.parse(date);
Calendar c
= Calendar.getInstance();
c.setTime(dt);
int minDate =c.getActualMinimum(Calendar.DATE);
c.set(Calendar.DATE, minDate);
Date dl
=c.getTime();
dataSource
=sdfYMD.format(dl);
}
catch (ParseException e) {
e.printStackTrace();
}
return dataSource;
}

posted @ 2011-08-11 16:27  helong  阅读(400)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3