您的位置:首页 > 编程语言 > Java开发

java 日期工具类

2012-10-25 17:46 302 查看
import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.List;

/**

* 日期工具类

*

* @author alon

*

*/

public class DateUtil {

/**

* 把字符串转化为时间

*

* @param dateStr

* yyyy-MM-dd

* @return

*/

public static Date getDateFromStr(String dateStr) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sdf.parse(dateStr);

return date;

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

/**

* 把字符串转化为时间

*

* @param dateStr

* @param pattern

* @return

*/

public static Date getDateFromStr(String dateStr, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

try {

Date date = sdf.parse(dateStr);

return date;

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

/**

* 把日期转化为yyyy-MM-dd格式的字符串

*

* @param date

* @return

*/

public static String getStrFromDate(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

return sdf.format(date);

}

/**

* 把日期转化为pattern格式的字符串

*

* @param date

* @param pattern

* @return

*/

public static String getStrFromDate(Date date, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

return sdf.format(date);

}

/**

* 取得传入的时间的前1天

*

* @param date

* @return

*/

public static String getLastDay(Date date) {

return getSomeDay(date, -1);

}

/**

* 取得传入的时间的后1天

*

* @param date

* @return

*/

public static String getAfterDay(Date date) {

return getSomeDay(date, 1);

}

/**

* 取得传入的时间的前几天或后几天

*

* @param date

* @param i

* 正数为几天后,负数为几天前

* @return

*/

public static String getSomeDay(Date date, int i) {

Calendar calendar = Calendar.getInstance();

calendar.set(date.getYear() + 1900, date.getMonth(), date.getDate());

calendar.add(Calendar.DAY_OF_MONTH, i);

return getStrFromDate(calendar.getTime());

}

/**

* 取得传入的时间的前几天或后几天

*

* @param date

* @param i

* 正数为几天后,负数为几天前

* @return

*/

public static Date getDateBySomeDay(Date date, int i) {

Calendar calendar = Calendar.getInstance();

calendar.set(date.getYear() + 1900, date.getMonth(), date.getDate());

calendar.add(Calendar.DAY_OF_MONTH, i);

return calendar.getTime();

}

/**

* 上个月的现在

*/

public static String getNowOfLastMonth() {

// Date Format will be display

SimpleDateFormat aSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

GregorianCalendar aGregorianCalendar = new GregorianCalendar();

// Get last month GregorianCalendar object

aGregorianCalendar.set(Calendar.MONTH,

aGregorianCalendar.get(Calendar.MONTH) - 1);

// Format the date to get year and month

String nowOfLastMonth = aSimpleDateFormat.format(aGregorianCalendar

.getTime());

return nowOfLastMonth;

}

/**

* 去年的现在

*/

public static String getNowOfLastYear() {

// Date Format will be display

SimpleDateFormat aSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

GregorianCalendar aGregorianCalendar = new GregorianCalendar();

// Get last month GregorianCalendar object

aGregorianCalendar.set(Calendar.YEAR,

aGregorianCalendar.get(Calendar.YEAR) - 1);

// Format the date to get year and month

String currentYearAndMonth = aSimpleDateFormat

.format(aGregorianCalendar.getTime());

return currentYearAndMonth;

}

/**

* 获取时间差

*

* @param beginDate

* @param endDate

* @return

*/

public static double timeDifferenceByMinute(Date beginDate, Date endDate) {

double minute = (beginDate.getTime() - endDate.getTime()) / (1000 * 60);

return minute;

}

/**

* 比较时间值大小

*

* @param beginDate

* @param endDate

* @return

*/

public static int compareTime(Date beginDate, Date endDate) {

Calendar c1 = Calendar.getInstance();

Calendar c2 = Calendar.getInstance();

c1.setTime(beginDate);

c2.setTime(endDate);

return c1.compareTo(c2);

}

/**

* 获取某时间段中以天为单位的时间

*

* @param beginDate

* @param endDate

* @return

*/

public static String[] getBetweenDates(Date beginDate, Date endDate) {

int day = (int)((endDate.getTime() - beginDate.getTime())

/ (1000 * 60 * 60 * 24));

String[] dates = new String[day + 1];

for (int i = 0; i <= day; i++) {

dates[i] = DateUtil.getSomeDay(beginDate, i);

}

return dates;

}

/**

* 获取某时间段中以周为单位的时间

* @param beginDate

* @param endDate

* @return

*/

public static List<String> getBetweenWeeks(Date beginDate, Date endDate) {

boolean flag = true;

List<String> weeks = new ArrayList<String>();

while (flag) {

Date temp = DateUtil.getDateBySomeDay(endDate, -6);

int result = DateUtil.compareTime(temp, beginDate);

if (result <= 0) {

flag = false;

}

weeks.add(DateUtil.getStrFromDate(endDate) + ":"

+ DateUtil.getStrFromDate(temp));

endDate = DateUtil.getDateBySomeDay(temp, -1);

}

return weeks;

}

/**

* 获取某时间段中以周为单位的时间

* @param beginDate

* @param endDate

* @return

*/

public static List<String> getBetweenWeeksByASC(Date beginDate, Date endDate) {

boolean flag = true;

List<String> weeks = new ArrayList<String>();

while (flag) {

if(DateUtil.compareTime(beginDate, endDate)<0){

Date temp = DateUtil.getDateBySomeDay(beginDate, 6);

int result = DateUtil.compareTime(temp, endDate);

if (result >0) {

flag = false;

}

weeks.add(DateUtil.getStrFromDate(beginDate) + ":"+ DateUtil.getStrFromDate(temp));

beginDate = DateUtil.getDateBySomeDay(temp, 1);

}else{

flag=false;

}

}

return weeks;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: