package com.alimama.mdrill.partion.thedate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
public class ThedatePartionsUtils {
public static HashMap<String,HashSet<String>> parseDays(HashSet<String> list,String type) throws ParseException
{
HashMap<String,HashSet<String>> rtn=new HashMap<String, HashSet<String>>();
for(String day:list)
{
String partion=ThedatePartionsUtils.parseDay(day,type);
HashSet<String> partlist=rtn.get(partion);
if(partlist==null)
{
partlist=new HashSet<String>();
rtn.put(partion, partlist);
}
partlist.add(day);
}
return rtn;
}
public static boolean canUsedThedate(String parttype)
{
return parttype.equals("day")||parttype.equals("default")||parttype.equals("month");
}
public static HashSet<String> partion2Days(String str,String type)
{
HashSet<String> rtn=new HashSet<String>();
if(type.equals("day"))
{
rtn.add(str);
return rtn;
}
if(type.equals("month"))
{
for(int i=1;i<=31;i++)
{
String strday=str+(i<10?"0":"")+String.valueOf(i);
try{
if(parseDay(strday,type).equals(str))
{
rtn.add(strday);
}
}catch(Exception e){}
}
return rtn;
}
for(int i=1;i<=31;i++)
{
String strday=str.substring(0, 6)+(i<10?"0":"")+String.valueOf(i);
try{
if(parseDay(strday,type).equals(str))
{
rtn.add(strday);
}
}catch(Exception e){}
}
return rtn;
}
// /**
// * 得到指定月的天数
// * */
// public static int getMonthLastDay(Date d)
// {
// Calendar a = Calendar.getInstance();
// a.setTime(d);
// a.set(Calendar.DATE, 1);//把日期设置为当月第一天
// a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
// int maxDate = a.get(Calendar.DATE);
// return maxDate;
// }
public static String parseDay(String str,String type) throws ParseException
{
if(type.equals("single"))
{
return "single";
}
if(type.equals("day"))
{
return str;
}
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
Date d=fmt.parse(str);
SimpleDateFormat fmtmonth = new SimpleDateFormat("yyyyMM");
if(type.equals("month"))
{
return fmtmonth.format(d);
}
SimpleDateFormat fmtrtn = new SimpleDateFormat("dd");
Integer rtn=Integer.parseInt(fmtrtn.format(d));
String xun="1";
if(rtn>10)
{
xun="2";
}
if(rtn>20)
{
xun="3";
}
return fmtmonth.format(d)+xun;
}
}