`
ccjsjymg
  • 浏览: 62264 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

日期工具类

阅读更多
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();
	}
}

分享到:
评论
1 楼 corejava2008 2010-10-28  
不错 不错,正好在用。

相关推荐

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...

    java日期工具类

    java日期工具类,java日期工具类,java日期工具类,java日期工具类

    DateUtils(日期工具类)

    DateUtils(日期工具类),包含日期格式化,解析等。

    日期工具类源码

    日期工具类

    日期工具类,包括各种日期之间的转换

    根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...

    原创好用实用的日期工具类

    强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...

    Java日期工具类,学习代码

    Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    史上最全的日期工具类

    各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化

    时间日期工具类(包含java8新特性).zip

    `时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...

Global site tag (gtag.js) - Google Analytics