下边代码用于获取不同的日期,作为字典用起来比较方便,记录在此:
package com.timelypower.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class DateUtils {
private final static String dateFormat = "yyyy-MM-dd";
private static Log log = LogFactory.getLog(DateUtils.class);
/**
* 按照指定格式返回格式好的当前日期
* @param dateFormat 默认yyyy-MM-dd
* @return
*/
public static String getCurrentDateString(String dateFormat){
return DateUtils.format(new Date(), dateFormat);
}
/**
* 说明 将日期格式化字符串,为null的返回空字符串
* @param date
* @return
*/
public static String format(Date date){
if(null == date)
return "";
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
return sf.format(date);
}
/**
* 说明 将日期格式化字符串,为null的返回空字符串
* @param date 日期
* @param dateFormat 格式化字符串,比如:yyyy-MM-dd
* @return
*/
public static String format(Date date,String dateFormat){
if(null == dateFormat || "".equals(dateFormat))
return DateUtils.format(date);
if(null == date)
return "";
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
return sf.format(date);
}
/**
* @说明 将指定的字符串格解析成日期类型,格式默认为:yyyy-MM-dd
* @param source 要进行解析的源字符串
* @return
*/
public static Date parase(String source)
{
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
try {
return sf.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
log.info("DataUtils.parase方法出错:"+e.getMessage());
}
return null;
}
/**
* @说明 将指定的字符串格解析成日期类型 例:如果日期source=20131210,则dateFormat应为:yyyyMMdd,两个应对应
* @param source 要进行解析的源字符串
* @param dateFormat 要解析的日期格式。
* @return
*/
public static Date parase(String source,String dateFormat )
{
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
try {
return sf.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
log.info("DataUtils.parase方法出错:"+e.getMessage());
}
return null;
}
/**
* @说明 对指定的日期增加或减少指定的天数
* @param date
* @param days
*/
public static Date addDays(Date date,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, days);
return cal.getTime();
}
/**
* @说明 对指定的日期增加或减少指定的天数
* @param date
* @param days
*/
public static Calendar addDays(Calendar date,int days){
date.add(Calendar.DAY_OF_MONTH, days);
return date;
}
/**
* @说明 对指定的日期增加或减少指定的月数
* @param date
* @param months
* @return
*/
public static Date addMonths(Date date,int months){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, months);
return cal.getTime();
}
/**
* @说明 对指定的日期增加或减少指定的月数
* @param date
* @param months
* @return
*/
public static Calendar addMonths(Calendar date,int months){
date.add(Calendar.MONTH, months);
return date;
}
/**
* @说明 对指定的日期增加或减少指定的小时数
* @param date
* @param hours
* @return
*/
public static Date addHours(Date date ,int hours){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, hours);
return cal.getTime();
}
/**
* @说明 对指定的日期增加或减少指定的小时数
* @param date
* @param hours
* @return
*/
public static Calendar addHours(Calendar date ,int hours){
date.add(Calendar.HOUR_OF_DAY, hours);
return date;
}
/**
* @说明 以字符串形式返回当前时间的毫秒数
* @return
*/
public static String getTimeMillions(){
Calendar cal = Calendar.getInstance();
long lt = cal.getTimeInMillis();
return String.valueOf(lt);
}
/**
* 获取当前月的第一天
* @return 当前月的第一天
*/
public static String getMonthFirstDay() {
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
Calendar calendar = Calendar.getInstance();
Date theDate = calendar.getTime();
GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
gcLast.setTime(theDate);
gcLast.set(Calendar.DAY_OF_MONTH, 1);
String day_first = df.format(gcLast.getTime());
StringBuffer str = new StringBuffer().append(day_first);
return str.toString();
}
/**
* 获取当前月的最后一天
* @return 当前月的最后一天
*/
public static String getMonthLastDay() {
Calendar calendar = Calendar.getInstance();
//最后一天
int maxday = calendar.getActualMaximum(Calendar.DATE);
calendar.set(Calendar.DATE,maxday);
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
Date theDate = calendar.getTime();
String s = df.format(theDate);
StringBuffer str = new StringBuffer().append(s);
return str.toString();
}
/**
* 获得往数据库字段类型为Date型时,插入的时间
* @param date 默认为当前日期,如果为空时 方法会自动new Date()
* @param dateFormat 默认为yyyy-MM-dd
* @return
*/
public static java.sql.Date paraseSqlDate(String date,String dateFormat){
try {
if(date == null || date.length() == 0){
return new java.sql.Date(new Date().getTime());
}else{
if(dateFormat == null)
dateFormat = DateUtils.dateFormat;
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
Date d = sf.parse(date);
return new java.sql.Date(d.getTime());
}
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
public static void main(String[] args) {
System.out.println(DateUtils.format(DateUtils.addMonths(new Date(), -12)));
System.out.println(getMonthLastDay());;
System.out.println(getMonthFirstDay());;
}
}