package cn.ksource.web.util;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.StringUtil;
public class DateParepareUtil {
/**
* 得到起始时间的当天的开始是时间 如:1014-01-01 00:00:00
* @param dateStr
* @return
*/
public static String getBeginDate(String dateStr){
return dateStr.trim()+" 00:00:00";
}
/**
* 得到起始时间的当天的结束是时间 如:1014-01-01 23:29:59
* @param dateStr
* @return
*/
public static String getEndDate(String dateStr){
return dateStr.trim()+" 23:59:59";
}
/**
* 返回当前时间字符串
* @param format,日期格式化字符串 如“yyyy-MM-dd”
* @return 当前日期字符串
*/
public static String getToday(String str) {
SimpleDateFormat format = new SimpleDateFormat(str);//设置日期格式
String nowTime = format.format(new Date());
return nowTime;
}
/**
* 功能描述:返回给定日期加上多少天之后的时间
* @param from yyyyMMdd
* @param day
* @param length
* @return
* @author:杨凯
* 时间:Apr 18, 2009 11:56:16 AM
*/
public static String getDateAdd(String from,int day){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(from));
} catch (Exception e) {
e.printStackTrace();
}
calendar.add(Calendar.DAY_OF_MONTH, day);
System.out.println(calendar.getTimeInMillis());
String date = sdf.format(calendar.getTime());
return date;
}
/**
* 通过年,月获得该月的第一天和最后一天 如果year和month参数都为空 默认为当前年月
* @param year 格式 yyyy
* @param month 格式 MM
* @return 数组第一个当前月第一天, 数组第二个:当前月最后一天
*/
public static String[] queryFirstLastDate(String year,String month) {
String[] str = new String[2];
if(StringUtil.isEmpty(year) || !StringUtils.isNumeric(year)||year.length()!=4||Integer.valueOf(year)<0) {
year = DateUtil.format(new Date(), "yyyy");
}
if(StringUtil.isEmpty(month)|| !StringUtils.isNumeric(month)||Integer.valueOf(month)<1||Integer.valueOf(month)>12) {
month = DateUtil.format(new Date(), "MM");
}
if(month.length()!=2) {
month = "0"+month;
}
String firstDate = year+"-"+month+"-01";
str[0] = firstDate;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = dateFormat.parse(firstDate);
String lastDate = dateFormat.format(lastDayOfMonth(date));
str[1] = lastDate;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
/*
* 获得指定日期所在月最后一天
*/
public static Date lastDayOfMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.roll(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 获取当前时间的以前的日期或者以后的日期
* @param format 返回日期格式
* @param num 如 -1: 前一个月 1:后一个月
* @return
*/
public static String getPrevNextMonth(String format,int num){
String str = "";
SimpleDateFormat sdf=new SimpleDateFormat(format);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, num);
cal.set(Calendar.DATE, 1);//把日期设置为当月第一天
return sdf.format(cal.getTime());
}
/**
* 功能描述:字母判断
*
* @param str
* @return
*/
public static boolean isZimu(String str) {
if (str == null || "".equals(str))
return false;
Pattern pattern = Pattern.compile("[a-zA-Z]*");
return pattern.matcher(str).matches();
}
public static void main(String[] args) {
System.out.println(isZimu("dddd2"));
}
/**
* 获得指定日期所有月的最有一天
*/
public static String lastDayMonth(String date,String inputFormat,String outputFormat) {
SimpleDateFormat format = new SimpleDateFormat(inputFormat);
try {
Date date2 = format.parse(date);
SimpleDateFormat dateFormat = new SimpleDateFormat(outputFormat);
String lastDate = dateFormat.format(lastDayOfMonth(date2));
System.out.println(lastDate);
return lastDate;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
}