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

时间工具 java

2016-01-06 20:22 405 查看
package com.cin.base.util;

import java.text.DateFormat;
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;

public class DateUtil {
public static String formatDateTime(Date date,String format){
if (date==null) return "";
if (format==null) return date.toString();
DateFormat df = new SimpleDateFormat(format);
return df.format(date);
}
public static String formatY0M0D(Date date){
return date==null?"":formatDateTime(date,"yyyyMMdd");
}
public static String formatYMD(Date date){
return date==null?"":formatDateTime(date,"yyyy-MM-dd");
}
public static String formatYMDHM(Date date){
return date==null?"":formatDateTime(date,"yyyy-MM-dd HH:mm");
}
public static String formatDateTimeByDate(Date date){
return date==null?"":formatDateTime(date,"yyyy-MM-dd HH:mm:ss");
}
public static String formatTimeStampByDate(Date date){
return date==null?"":formatDateTime(date,"yyyy-MM-dd HH:mm:ss.SSS");
}
public static String formatTimeStampSByDate(Date date){
return date==null?"":formatDateTime(date,"yyyy-MM-dd HH:mm:ss.S");
}
public static boolean showNew(Date time){
if (time==null) return false;
return DateUtil.addDays(time,3).compareTo(new Date())>=0;
}
public static Date addDays(Date srcDate, int addDays)
{
return getNextDayFromCurrent(srcDate,addDays);
}
public static Date addMinutes(Date srcDate, int minutes)
{
Calendar cal = Calendar.getInstance();
cal.setTime(srcDate);
cal.add(Calendar.MINUTE, minutes);
return cal.getTime();
}

public static Date getNextDayFromCurrent(Date currDate,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(currDate);
gc.add(GregorianCalendar.DATE, i);
return gc.getTime();
}

public static Date getNextMonthFromCurrent(Date current,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(current);
gc.add(GregorianCalendar.MONTH, i);
return gc.getTime();
}

public static Date getNextWeekFromCurrent(Date current,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(current);
gc.add(GregorianCalendar.WEEK_OF_YEAR, i);
return gc.getTime();
}

public static Date getNextYearFromCurrent(Date current,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(current);
gc.add(GregorianCalendar.YEAR, i);
return gc.getTime();
}

public static Date getNextHourFromCurrent(Date current,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(current);
gc.add(GregorianCalendar.HOUR, i);
return gc.getTime();
}

public static int getCurrDay(){
Calendar now = Calendar.getInstance();
return now.get(Calendar.DAY_OF_WEEK);
}

public static Date StrToDate(String str,String format){
if (str == null || "".equals(str)) {
return null;
}
try{
if(format == null || "".equals(format))
format = "yyyy-MM-dd";
java.text.SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(str);
}catch(ParseException pe){
pe.printStackTrace();
return null;
}
}

public static Date StrToDate(String str){
return StrToDate(str,"yyyy-MM-dd");
}

public static long getNumOfDays(String date1,String date2){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date d1;
try {
d1 = df.parse(date1);
Date d2 = df.parse(date2);
long diff = Math.abs(d2.getTime()-d1.getTime());
return (long)(diff/(1000*60*60*24));
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}

public static boolean compare(Date d1,Date d2)
{
if((d2.getTime()-d1.getTime())>600000l){
return true;
}
return false;
}

@SuppressWarnings("deprecation")
public static String getTheDay(Date d){
return "日一二三四五六".charAt(d.getDay())+"";
}

public static String []  weekDate(int year ,int week){
if(week<1||week>52)return null;
String s [] = new String [2];
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
s[0] = formatYMD(c.getTime());
c.add(Calendar.DATE, 6);
s[1] = formatYMD(c.getTime());
return s;

}

public static String []  monthDate(int year ,int month){
if(month<1||month>12) return null;
String s [] = new String [2];
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, 1);
s[0] = formatYMD(c.getTime());
c.add(Calendar.MONTH, 1);
c.add(Calendar.DATE, -1);
s[1] = formatYMD(c.getTime());
return s;

}

public static String []  seasonDate(int year ,int season){
if(season<1||season>4)return null;
String y= String.valueOf(year);
String []s = new String [2];
switch(season){
case 1 : s[0]= y+"-01-01";s[1]= y+"-03-31";break;
case 2 : s[0]= y+"-04-01";s[1]= y+"-06-30";break;
case 3 : s[0]= y+"-07-01";s[1]= y+"-09-30";break;
case 4 : s[0]= y+"-10-01";s[1]= y+"-12-31";break;
}
return s;

}

public static Date getFirstDayOfWeek(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
return calendar.getTime();
}

public static Date getLastDatetimeOfWeek(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
calendar.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
return calendar.getTime();
}

public static Date getFirstDayOfMonth(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.DAY_OF_MONTH,1);
return calendar.getTime();
}

public static Date getNextDayCurrDay(Date currDate,int i){
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(currDate);
gc.add(GregorianCalendar.DATE, i);
return gc.getTime();
}

public static Date getBeginOfDay(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}

public static Date[] getDaysInInterval(Date beginDate, Date endDate) {
List days = new ArrayList();
//日期回滚一天,也就是最后一天
int dateLength = (int) ((endDate.getTime()-beginDate.getTime())/(24*60*60*1000));  ;

GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(beginDate);
for (int i = 0; i <= dateLength; i++) {
calendar.add(GregorianCalendar.DATE, 0 != i ? 1 : 0);
days.add(calendar.getTime());
}
return days.toArray(new Date[days.size()]);
}

public static Date[] getDaysInWeek(Date someDay) {
List daysInWeek = new ArrayList();
Date firstDay = getFirstDayOfWeek(someDay);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(firstDay);
for (int i = 0; i < 7; i++) {
calendar.add(GregorianCalendar.DAY_OF_WEEK, 0 != i ? 1 : 0);
daysInWeek.add(calendar.getTime());
}
return daysInWeek.toArray(new Date[daysInWeek.size()]);
}

public static Date[] getSevernDaysPrior(Date someDay) {
List daysInWeek = new ArrayList();
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(someDay);
calendar.add(GregorianCalendar.DATE, -7);
calendar.setTime(calendar.getTime());
for (int i = 0; i < 7; i++) {
calendar.add(GregorianCalendar.DATE, 1);
daysInWeek.add(calendar.getTime());
}
return daysInWeek.toArray(new Date[daysInWeek.size()]);
}

public static Date[] getDaysInMonth(Date someDay) {
List daysInMonth = new ArrayList();
Date firstDay = getFirstDayOfMonth(someDay);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(firstDay);
for (int i = 0; i < getDaysCountOfMonth(someDay); i++) {
calendar.add(GregorianCalendar.DAY_OF_MONTH, 0 != i ? 1 : 0);
daysInMonth.add(calendar.getTime());
}
return daysInMonth.toArray(new Date[daysInMonth.size()]);
}

public static Date[] splitDayByHour(Date someDay) {
List dates = new ArrayList();
Date begin = getBeginOfDay(someDay);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(begin);
for (int i = 0; i < 24; i++) {
calendar.add(GregorianCalendar.HOUR_OF_DAY, 0 != i ? 1 : 0);
dates.add(calendar.getTime());
}
return dates.toArray(new Date[dates.size()]);
}

public static Date[] splitDayByThreeHour(Date someDay) {
List dates = new ArrayList();
Date begin = getBeginOfDay(someDay);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(begin);
for (int i = 0; i < 8; i++) {
calendar.add(GregorianCalendar.HOUR_OF_DAY, 0 != i ? 3 : 0);
dates.add(calendar.getTime());
}
return dates.toArray(new Date[dates.size()]);
}

public static Date getFirstDayOfYear(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.DAY_OF_YEAR, 1);
return calendar.getTime();
}

public static Date[] splitYearByMonth(Date someDay) {
List dates = new ArrayList();
Date fristDay = getFirstDayOfYear(someDay);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(fristDay);
for (int i = 0; i < 12; i++) {
calendar.add(GregorianCalendar.MONTH, 0 != i ? 1 : 0);
dates.add(calendar.getTime());
}
return dates.toArray(new Date[dates.size()]);
}

public static int getDaysCountOfMonth(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
//把日期设置为当月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
//日期回滚一天,也就是最后一天
calendar.roll(Calendar.DAY_OF_MONTH, -1);
return calendar.get(Calendar.DATE);
}

public static Date getLastDayOfMonth(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
//把日期设置为当月第一天
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1);
calendar.set(Calendar.DATE, 1);
//日期回滚一天,也就是最后一天
calendar.add(Calendar.DATE, -1);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(calendar.getTime()));
return calendar.getTime();
}

public static int getDaysBetween(Date start,Date end){
long diff = Math.abs(end.getTime()-start.getTime());
return (int)(diff/(1000*60*60*24));
}

public static Date addHours(Date srcDate, int hours)
{
Calendar cal = Calendar.getInstance();
cal.setTime(srcDate);
cal.add(Calendar.HOUR, hours);
return cal.getTime();
}

public static Date addWeeks(Date srcDate, int weeks)
{
Calendar cal = Calendar.getInstance();
cal.setTime(srcDate);
cal.add(Calendar.WEEK_OF_MONTH, weeks);
return cal.getTime();
}

public static Date addMonth(Date srcDate, int month)
{
Calendar cal = Calendar.getInstance();
cal.setTime(srcDate);
cal.add(Calendar.MONTH, month);
return cal.getTime();
}

public static Date[] getDateArrays(Date start, Date end, String type) {
List dates = new ArrayList();
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
//      Date tmpDate = calendar.getTime();
//      long endTime = end.getTime();
Date firstDay = null;
Date lastDay = null;
if(type.equals("HOUR")){
int days = getDaysBetween(start,end);
int average = days*24/12;
firstDay = getBeginOfDay(start);
for(int i=0;i<=12;i++){
dates.add(addHours(firstDay,average*i));
}
}else if(type.equals("DAY")){
int days = getDaysBetween(start,end) + 1;
for(int i=0;i
dates.add(addDays(start,i));
}
}else if(type.equals("WEEK")){
firstDay = getFirstDayOfWeek(start);
lastDay = getFirstDayOfWeek(end);
dates.add(start);
while(firstDay.before(lastDay)){
firstDay = addDays(firstDay,7);
dates.add(firstDay);
}
if(lastDay.before(end)){
dates.add(end);
}else{
dates.add(lastDay);
}
}else if(type.equals("MONTH")){
firstDay = getFirstDayOfMonth(start);
lastDay = getFirstDayOfMonth(end);
dates.add(start);
while(firstDay.before(lastDay)){
firstDay = addMonth(firstDay,1);
dates.add(firstDay);
}
if(lastDay.before(end)){
dates.add(end);
}else{
dates.add(lastDay);
}
}
//      while (tmpDate.before(end) || tmpDate.getTime() == endTime) {
//        ret.add(calendar.getTime());
//        calendar.add(Calendar.DAY_OF_MONTH, 1);
//        tmpDate = calendar.getTime();
//      }
//      Date[] dates = new Date[ret.size()];
//      return (Date[]) ret.toArray(dates);
return dates.toArray(new Date[dates.size()]);
}

public static Date getEndOfDay(Date someDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(someDay);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}

public static List getDatesBetween(Date start,Date end){
List dateList = new ArrayList();
int days = getDaysBetween(start, end);
for (int i = 0; i <= days; i++) {
dateList.add(addDays(start, i));
}
return dateList;
}

public static List> getDateArrays(Date start, Date end) {
List>  weeks = new ArrayList>();
Calendar c_begin = Calendar.getInstance();
c_begin.setTime(start);
Calendar c_end = Calendar.getInstance();
c_end.setTime(end);
int count = 1;
c_end.add(Calendar.DAY_OF_YEAR, 1);  //结束日期下滚一天是为了包含最后一天
List week = new ArrayList();
while(c_begin.before(c_end)){
week.add(c_begin.getTime());
if(c_begin.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
count++;
weeks.add(week);
week = new ArrayList();
}
c_begin.add(Calendar.DAY_OF_YEAR, 1);
}
return weeks;
}

public static List> getMonthDateArrays(Date start, Date end) {
List>  months = new ArrayList>();
Date firstDayOfBeginTimeMonth = DateUtil.getFirstDayOfMonth(end);//今天所在月的第一天
String firstDayOfBeginTimeMonthStr = DateUtil.formatDateTime(firstDayOfBeginTimeMonth, "yyyy-MM-dd");
String[] arr1 = firstDayOfBeginTimeMonthStr.split("-");
String yearStr1 = arr1[0];
int year1 = 0;
if(yearStr1 != null){
year1 = Integer.parseInt(yearStr1);
}
String monthStr1 = arr1[1];
int month1 = 0;
if(monthStr1 != null){
month1 = Integer.parseInt(monthStr1);
}
Date firstDayOfCreateTimeMonth = DateUtil.getFirstDayOfMonth(start);//获取创建用户所在月的第一天
String firstDayOfCreateTimeMonthStr = DateUtil.formatDateTime(firstDayOfCreateTimeMonth, "yyyy-MM-dd");
String[] arr2 = firstDayOfCreateTimeMonthStr.split("-");
String yearStr2 = arr2[0];
int year2 = 0;
if(yearStr2 != null){
year2 = Integer.parseInt(yearStr2);
}
String monthStr2 = arr2[1];
int month2 = 0;
if(monthStr2 != null){
month2 = Integer.parseInt(monthStr2);
}
if(year2 == year1){//用户创建时间和当前时间在同一年
for(int i = month2;i < (month1+1);i++){
List dateList = new ArrayList();
String[] s = DateUtil.monthDate(year2, i);//获取得某年的第几月的起始日期和结束日期-[0]起始日期 [1]结束日期
for(int index = 0;index
Date date = new Date();
date = StrToDate(s[index]);
if(i == month2 && index == 0){
dateList.add(start);
}else if(i == month1 && index == 1){
dateList.add(end);
}
else {
dateList.add(date);
}
}
months.add(dateList);
}
}else {
if(year2 < year1){//用户创建时间和当前时间不在同一年,如2013--2014
int num = year1 - year2;
for(int i = month2;i < 13;i++){
List dateList = new ArrayList();
String[] s = DateUtil.monthDate(year2, i);//获取得某年的第几月的起始日期和结束日期-[0]起始日期 [1]结束日期
for(int index = 0;index
Date date = new Date();
date = StrToDate(s[index]);
if(i == month2 && index == 0){
dateList.add(start);
}else if(i == month1 && index == 1){
dateList.add(end);
}
else {
dateList.add(date);
}
}
months.add(dateList);
}
if(num > 1){
for(int i = year2+1 ;i < year1;i++){
for(int j = 1;j < 13;j++){
List dateList = new ArrayList();
String[] s = DateUtil.monthDate(i, j);//获取得某年的第几月的起始日期和结束日期-[0]起始日期 [1]结束日期
for(int index = 0;index
Date date = new Date();
date = StrToDate(s[index]);
if(date.getTime()>start.getTime() && date.getTime()
dateList.add(date);
}
}
months.add(dateList);
}
}
}
for(int i = 1;i < month1+1;i++){
List dateList = new ArrayList();
String[] s = DateUtil.monthDate(year1, i);//获取得某年的第几月的起始日期和结束日期-[0]起始日期 [1]结束日期
for(int index = 0;index
Date date = new Date();
date = StrToDate(s[index]);
if(i == month2 && index == 0){
dateList.add(start);
}else if(i == month1 && index == 1){
dateList.add(end);
}
else {
dateList.add(date);
}
}
months.add(dateList);
}
}
}

return months;
}

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