package webkiosk.util;
/**
* @author Jeff.Qian
* Created on 2004-8-4
*/
public final class ArrayUtil {
/*
* 将字符串分割成String数组
* 例如"ab,ac,ad,bc"->{"ab","ac","ad","bc"}
* divison--分隔符
* */
public static String[] stringToArray(String s,String division)
{
if (s==null||s.length()==0) return new String[0];
String[] tempValue = new String[getLength(s,division)];
int count = 0;
while (s.indexOf(division)!=-1){
tempValue[count]=s.substring(0,s.indexOf(division));
s = s.substring(s.indexOf(division)+1,s.length());
count ++;
}
if (s.indexOf(division)==-1) {
tempValue[count]=s;
}
return tempValue;
}
/*
*将字符串分割变成一个int数组
*例如:"12,34,56,78"->{12,34,56,78}
*/
public static int[] intToArray(String s,String division)
{
if (s==null||s.length()==0) return new int[0];
int[] tempValue = new int[getLength(s,division)];
int count = 0;
while (s.indexOf(division)!=-1){
tempValue[count]=Integer.parseInt(s.substring(0,s.indexOf(division)));
s = s.substring(s.indexOf(division)+1,s.length());
count ++;
}
if (s.indexOf(division)==-1) {
tempValue[count]=Integer.parseInt(s);
count ++;
}
return tempValue;
}
/*
* 生成数组的长度
* */
public static int getLength(String in,String division){
if (in==null||in.length()==0) return 0;
char[] temp = in.toCharArray();
int count = 1;
for (int i = 0; i < temp.length; i++) {
if (String.valueOf(temp[i]).equalsIgnoreCase(division)) count++;
}
return count;
}
public static String arrayToString(String[] args,String division){
StringBuffer sb = new StringBuffer(512);
for (int i = 0; i < args.length; i++) {
sb.append(args[i]);
if (i!=(args.length-1)) sb.append(division);
}
return sb.toString();
}
public static String arrayToString(int[] args,String division){
StringBuffer sb = new StringBuffer(512);
for (int i = 0; i < args.length; i++) {
sb.append(args[i]);
if (i!=(args.length-1)) sb.append(division);
}
return sb.toString();
}
}
/*
* 创建日期 2004-10-27
* @author Jeff.Qian
* @vesion 1.0
*/
package webkiosk.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* @author Jeff.Qian
* 用途 日期与字符之间的转化
*/
public final class DateInterval {
//定义日期格式
//输入
private String inputFormat ="yyyy-MM-dd";
//输出
private String outputFormat = "yyyy-MM-dd";
/**
* @param inputFormat 要设置的 inputFormat。
*/
public void setInputFormat(String inputFormat) {
this.inputFormat = inputFormat;
}
/**
* @param outputFormat 要设置的 outputFormat。
*/
public void setOutputFormat(String outputFormat) {
this.outputFormat = outputFormat;
}
public DateInterval(){}
public DateInterval(String inputFormat,String outputFormat){
this.inputFormat = inputFormat;
this.outputFormat = outputFormat;
}
public Date formatString(String source){
//先判断格式
SimpleDateFormat df = new SimpleDateFormat(inputFormat);
// df.setLenient(false);
Date date = null;
try{
date = df.parse(source);
} catch(ParseException pe){
pe.printStackTrace();
date = new Date();
}
return date;
}
/**
* 返回日期之间的时间间隔,比如:
* 2004-10-8 -- 2004-10-10,如果以天为间隔,则返回
* {"2004-10-8","2004-10-9","2004-10-10"}
* flag默认值
* -1:表示按小时计算
* 0:表示天(day)
* 1:表示星期(week)
* 2:表示月(month)
* 3:表示季度(quarter)
* 4:表示年(year)
*
* */
public ArrayList getIntervals(Date begin,Date end,int flag){
ArrayList list = new ArrayList();
Calendar cal1 = new GregorianCalendar();
cal1.setTime(begin);
Calendar cal2 = new GregorianCalendar();
cal2.setTime(end);
cal2.add(Calendar.DAY_OF_YEAR,1);
cal1.clear(Calendar.MILLISECOND);
cal1.clear(Calendar.SECOND);
cal1.clear(Calendar.MINUTE);
cal1.clear(Calendar.HOUR_OF_DAY);
SimpleDateFormat df = new SimpleDateFormat(outputFormat);
Date date = null;
//处理以天为单位递增的
if (flag==0){
if ((!cal1.before(cal2)&&(!cal1.after(cal2)))){
list.add(df.format(begin));
list.add(df.format(end));
} else {
while(!cal1.after(cal2)){
date = cal1.getTime();
list.add(df.format(date));
cal1.add(Calendar.DAY_OF_YEAR,1);
}
}
}
//处理以星期为单位递增的
if (flag==1){
int first = cal1.get(Calendar.DAY_OF_WEEK);
list.add(df.format(cal1.getTime()));
cal1.add(Calendar.DAY_OF_YEAR,(8-first));
while(cal1.before(cal2)){
date =cal1.getTime();
list.add(df.format(date));
cal1.add(Calendar.DAY_OF_YEAR,7);
}
if (!cal1.before(cal2)) {
date =cal2.getTime();
list.add(df.format(date));
}
}
//处理以月为单位递增的
if (flag ==2){
date =cal1.getTime();
list.add(df.format(date));
cal1.clear(Calendar.DAY_OF_MONTH);
cal1.add(Calendar.MONTH,1);
while (cal1.before(cal2)){
date =cal1.getTime();
list.add(df.format(date));
cal1.add(Calendar.MONTH,1);
}
if (!cal1.before(cal2)) {
date =cal2.getTime();
list.add(df.format(date));
}
}
//处理以季度为单位递增的
if (flag==3){
date = cal1.getTime();
list.add(df.format(date));
cal1.clear(Calendar.DAY_OF_MONTH);
int first = cal1.get(Calendar.MONTH);
cal1.add(Calendar.MONTH,(4-(first+1)%3));
while(cal1.before(cal2)){
date =cal1.getTime();
list.add(df.format(date));
cal1.add(Calendar.MONTH,3);
}
if (!cal1.before(cal2)) {
date =cal2.getTime();
list.add(df.format(date));
}
}
//处理以年为单位递增的
if (flag==4){
date = cal1.getTime();
list.add(df.format(date));
cal1.clear(Calendar.DAY_OF_MONTH);
cal1.clear(Calendar.MONTH);
cal1.add(Calendar.YEAR,1);
while (cal1.before(cal2)){
date =cal1.getTime();
list.add(df.format(date));
cal1.add(Calendar.YEAR,1);
}
if (!cal1.before(cal2)) {
date =cal2.getTime();
list.add(df.format(date));
}
}
//处理以小时为单位的
if (flag ==-1&&(df.format(begin).equals(df.format(end)))) {
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
list.add(df2.format(cal1.getTime()));
for (int k=0;k<24;k++){
cal1.add(Calendar.HOUR_OF_DAY,1);
list.add(df2.format(cal1.getTime()));
}
}
return list;
}
public static void main(String[] args){
DateInterval du = new DateInterval();
Date date1 = du.formatString("2004-11-11");
Date date2 = du.formatString("2004-11-11");
ArrayList list = du.getIntervals(date1,date2,0);
int count = 0;
while (count<list.size()){
System.out.println(list.get(count));
count++;
}
}
}