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();
}
}
分享到:
相关推荐
Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
java日期工具类,java日期工具类,java日期工具类,java日期工具类
DateUtils(日期工具类),包含日期格式化,解析等。
日期工具类
根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...
强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化
`时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...