package com.zhanglu.date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
/**
* 日期工具
* @author zhanglu
*
*/
public class DateUtil {
private final static String GMT_CHINESE = "GMT+8";
private final static String DATE_FORMAT01 = "yyyy-MM-dd HH:mm:ss";
private final static String DATE_FORMAT02 = "yyyy-MM-dd";
private static List list = new ArrayList();
private static HashMap map = new HashMap();
/**
* 取得某天相加(减)后的那一天
*/
public static Date getAnotherDate(Date date,int numer){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_YEAR, numer);
return calendar.getTime();
}
/**
* 格式化日期
*/
public static String dateFormat(String pattern,Date date){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setTimeZone(setTimeZone());
return sdf.format(date);
}
/**
* 获取系统属性
*
*/
// public static void getSystemInfo(){
// Properties pros = System.getProperties();
// Set set = pros.keySet();
// Iterator it = set.iterator();
// while(it.hasNext()){
// String key = (String)it.next();
// System.out.println(key+"="+pros.get(key));
// }
//
// }
/**
* 取得某月的最后一天
*/
public static Date getLastDayOfMonth(int year,int month){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
// int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// calendar.set(Calendar.DAY_OF_MONTH, lastDay);
calendar.set(Calendar.DATE, 1);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* 设置时区
*/
public static TimeZone setTimeZone(){
TimeZone zone = TimeZone.getTimeZone(DateUtil.GMT_CHINESE);
//SimpleTimeZone stz = new SimpleTimeZone(zone.getRawOffset(),zone.getID());
return zone;
}
/**
* 日期段有多少天
*/
public static List getDays(Calendar start,Calendar end){
if(start == null || end == null) throw new NullPointerException("日期参数为空!");
Calendar d1 = start;
for(;d1.before(end);d1.add(Calendar.DAY_OF_YEAR, 1)){
list.add(dateFormat(DATE_FORMAT02,d1.getTime()));
}
return list;
}
/**
* 取得某天是一年中的多少周
*/
public static int getWeekOfYear(Date date){
if(date == null) throw new NullPointerException("参数不能为空!");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
/**
* 取得某天所在周的第一天
*/
public static Date getFirstDayOfWeek(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int d = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DAY_OF_YEAR, -d+1);
return calendar.getTime();
}
/**
* 取得某一年共有多少周
*/
public static int getWeekOfYear(int year){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
return calendar.getMaximum(Calendar.WEEK_OF_YEAR);
}
/**
* 取得某年某周的第一天
* 交叉问题:比如2008.2.28到2009.1.3属于2008年最后一周,那么2009年第一周第一天从1.4号
*/
public static Date getFirstDay(int year,int week){
Calendar calendar = Calendar.getInstance();
int min_week = calendar.getMinimum(Calendar.WEEK_OF_YEAR);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, min_week);
calendar.set(Calendar.DAY_OF_WEEK, 1);
if(calendar.get(Calendar.YEAR) != year){
week++;
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
}
return calendar.getTime();
}
/**
* 取得某年某周的最后一天
* 交叉问题:比如2008.2.28到2009.1.3属于2008年最后一周,那么2009.1.03为2008年最后一周的最后一天
*/
public static Date getLastDay(int year,int week){
Calendar calendar = Calendar.getInstance();
int min_week = calendar.getMinimum(Calendar.WEEK_OF_YEAR);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, min_week);
calendar.set(Calendar.DAY_OF_WEEK, 1);
if(calendar.get(Calendar.YEAR) != year){
week++;
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
calendar.set(Calendar.DAY_OF_WEEK,7);
}
return calendar.getTime();
}
}
日期工具类
最新推荐文章于 2023-12-29 18:11:00 发布