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;
}
}
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;
}
}
相关文章推荐
- Java日期工具类一
- 关于日期时间操作工具类DateUtil(一)-----对java.util.Date 的操作.
- Java日期操作工具类
- Java日期工具类
- java 日期处理工具类
- java日期工具类DateUtil
- (八)Java日期工具类DateUtils详解(一)
- (八)Java日期工具类DateUtils详解(一)
- java日期工具类DateUtil-续二
- java日期工具类3
- (八)Java日期工具类DateUtils详解(二)
- (八)Java日期工具类DateUtils详解(二)
- (八)Java日期工具类DateUtils日期转Calendar及TimeZone 详解(三)
- java日期转化工具类
- java日期工具类DateUtil
- java日期工具类(Long型,Date型,yyyyMMdd型)等
- Java Calendar日期工具类
- Java日期处理工具类DateUtils详解
- java日期工具类
- Java将Unix时间戳转换成指定格式日期字符串工具类