`
canofy
  • 浏览: 830142 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

请您先登录,才能继续操作

一个时间类

    博客分类:
  • j2EE
阅读更多

	/**
	 * 从字符串类型获取日期Date
	 * @param dateStr  日期字符串,如:20080321
	 * @param format  格式化模式,如yyyymmdd 和dateStr保持一致的格式
	 * @return 返回一个Date类型日期
	 * @throws Exception
	 */
	public static Date getDateFromString(String dateStr, String format) {

		if (dateStr == null || format == null) {
			try {
				throw new Exception("数据类型异常" + dateStr + "|" + format);
			} catch (Exception e) {
				System.err.println("数据类型异常");
			}
		}

		SimpleDateFormat df = new SimpleDateFormat(format);
		Date date;
		try {
			date = df.parse(dateStr);
			return date;
		} catch (Exception ex) {
			return new Date();
		}
	}

	/**
	 * Calendar类型转换成Date类型日期
	 * 
	 * @param calendar
	 * @return
	 */
	public static Date getDateFromCalendar(Calendar calendar) {
		return calendar.getTime();
	}

	/**
	 * Timestamp类型转换成Date类型日期
	 * 
	 * @param timestamp
	 * @param format
	 * @return
	 */
	public static Date getDateFromTimestamp(Timestamp timestamp, String format) {
		return getDateFromString(timestamp.toString(), format);
	}

	/**
	 * String类型转换成Timestamp类型日期
	 * 
	 * @param dateStr
	 *            日期字符串
	 * @return
	 * @throws Exception
	 */
	public static Timestamp getTimestampFromString(String dateStr)
			throws Exception {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
		return Timestamp.valueOf(sdf.format(getDateFromString(dateStr,
				"yyyyMMdd")));
	}

	/**
	 * Calendar类型转换Timestamp类型的日期
	 * 
	 * @param calendar
	 *            参数是Calendar类型
	 * @return
	 */
	public static Timestamp getTimestampFromCalendar(Calendar calendar) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
		return Timestamp.valueOf(sdf.format(calendar.getTime()));
	}

	/**
	 * Date类型转换Timestamp类型的日期
	 * 
	 * @param date
	 * @return
	 */
	public static Timestamp getTimestampFromDate(Date date) {
		try {
			return getTimestampFromString(getStringFromDate(date, "yyyy-MM-dd"));
		} catch (Exception e) {
			// System.out.println("获取日期出错");
			return null;
		}
	}

	/**
	 * String(字符串类型)转换成Calendar类型的日期
	 * 
	 * @param dateStr
	 * @return
	 */
	public static Calendar getCalendarFromString(String dateStr) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(getDateFromString(dateStr, "yyyymmdd"));
		return calendar;
	}

	/**
	 * Date类型转换成Calendar类型日期
	 * 
	 * @param date
	 * @return
	 */
	public static Calendar getCalendarFromDate(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar;
	}

	/**
	 * Timestamp类型转换成Calendar类型日期
	 * 
	 * @param timestamp
	 * @return
	 */
	public static Calendar getCalendarFromTimestamp(Timestamp timestamp) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(getDateFromTimestamp(timestamp, "yyyymmdd"));
		return calendar;
	}

	/**
	 * Date类型转换成String(字符串)类型的日期
	 * 
	 * @param date
	 * @return
	 */
	public static String getStringFromDate(Date date, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}

	/**
	 * Calendar类型转换成String类型的日期
	 * 
	 * @param celendar
	 * @return
	 */
	public static String getStringFromCalendar(Calendar celendar, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(celendar.getTime());
	}

	/**
	 * Timestamp类型转换成String类型的日期
	 * 
	 * @param timestamp
	 * @return
	 */
	public static String getStringFromTimestamp(Timestamp timestamp) {
		return timestamp.toString();
	}

	/**
	 * 格式化format
	 * 
	 * @param dateStr
	 * @param format
	 * @return
	 */
	public static String getStringFormat(String dateStr, String format) {

		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String result = "";

		try {
			result = sdf.format(dateStr);
		} catch (Exception e) {
			System.out.println("出现错误");
		}

		return result;

	}

	/**
	 * 是否为某个月的最后一天
	 * 
	 * @param days
	 * @param month
	 * @param year
	 * @return
	 */
	public static boolean isLastDayOfMonth(int days, int month, int year) {
		month = month - 1;
		int monthCompare = month;
		Calendar calendar = Calendar.getInstance();
		// calendar.set(year, month, days);
		calendar.set(Calendar.DAY_OF_MONTH, days);
		calendar.set(Calendar.MONTH, month);
		calendar.set(Calendar.YEAR, year);
		// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
		// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
		calendar.add(Calendar.DAY_OF_MONTH, 1);
		// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
		// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
		if (monthCompare != calendar.getInstance().MONTH) {
			return true;
		}
		return false;
	}

	//	
	// /**
	// * @param args
	// * @throws ParseException
	// */
	// public static void main(String[] args) throws ParseException {
	// DateTool dateTool=new DateTool();
	// //测试是否为最后一天。。。
	// boolean b=dateTool.isLastDayOfMonth(29, 02, 2007);
	// if(b){s
	// System.out.println("最后一天");
	// }else{
	// System.out.println("不是最后一天");
	// }
	// Date date=new Date();
	// SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
	// sdf.format(date);
	//		
	// Date date1=new Date();
	//		
	// Date date2=new Date();
	//		
	// System.out.println(getTimestampFromDate(date1).toString());
	// }

	/**
	 * 获取当前的月份的几号
	 * 
	 * @return
	 */
	public static int getCurrentDayOfMonth() {
		return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 获取当前的月份
	 * 
	 * @return
	 */
	public static int getCurrentMonth() {
		return Calendar.getInstance().get(Calendar.MONTH);
	}

	/**
	 * 获取当前的年
	 * 
	 * @return
	 */
	public static int getCurrentYear() {
		return Calendar.getInstance().get(Calendar.YEAR);
	}

	/**
	 * 获取当前的日期是一年中的第几天
	 * 
	 * @return
	 */
	public static int getCurrentDayOfYear() {
		return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 获取当前的日期在当前月中是第几周
	 * 
	 * @return
	 */
	public static int getCurrentWeekOfMonth() {
		return Calendar.getInstance().get(Calendar.WEEK_OF_MONTH);
	}

	/**
	 * 获取当前的日期在当前年里的第几周
	 * 
	 * @return
	 */
	public static int getCurrentWeekOfYear() {
		return Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
	}

	/**
	 * 获取指定calendar的月中的几号
	 * 
	 * @param calendar
	 * @return 返回月份值,是一个int型数据
	 */
	public static int getDayOfMonth(Calendar calendar) {
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 获取指定calendar的月份
	 * 
	 * @param calendar
	 * @return 返回月份值,是一个int型数据
	 */
	public static int getMonth(Calendar calendar) {
		return calendar.get(Calendar.MONTH) + 1;
	}

	/**
	 * 获取指定calendar的年
	 * 
	 * @param calendar
	 * @return 返回年值,是一个int型数据
	 */
	public static int getYear(Calendar calendar) {
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 获取指定calendar中年份中的第几天
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getDayOfYear(Calendar calendar) {
		return calendar.get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 获取指定calendar的月中的第几周
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getWeekOfMonth(Calendar calendar) {
		return calendar.get(Calendar.WEEK_OF_MONTH);
	}

	/**
	 * 获取指定calendar的年中的第几周
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getWeekOfYear(Calendar calendar) {
		return calendar.get(Calendar.WEEK_OF_YEAR);
	}

	/**
	 * 得到两个日期之间相差多少天 
	 * @param beginDate  开始日期
	 * @param endDate    结束日期
	 * @return
	 */
	public static int dateDiff(String beginDate,String endDate){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = sdf.parse(endDate);
		} catch (ParseException e) {
			date = new Date();
			e.printStackTrace();
		}
		
		
		long end 	= date.getTime();
		try {
			date = sdf.parse(beginDate);
		} catch (ParseException e) {
			date = new Date();
			e.printStackTrace();
		}
		long  begin 	= date.getTime();
		
		long day = (end-begin)/(1000*3600*24);		//除1000是把毫秒变成秒
		
		return Integer.parseInt(Long.toString(day));		
	}

	/**
	 * 日期推迟
	 * 
	 * @param date
	 *            需要推迟的日期
	 * @param dayNumber
	 *            需要推迟的天数
	 * @return 返回新的日期
	 */
	public static Date dateAdd(Date date, int dayNumber) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, dayNumber);
		return calendar.getTime();
	}
/**
	 * 得到某种类型的中间的所有日期.格式为"yyyy-MM-dd"	
	 * @param beginDate
	 * @param endDate
	 * @return
	 */
	public static String[] getDaysByRang(String beginDate,String endDate){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
		//得到两个日期间相差多少天
		int num = dateDiff(beginDate,endDate);
		if(num<0){
			//颠倒一下日期
			String tmp = beginDate;
			beginDate = endDate;
			endDate = tmp;
			num = 0-num;
		}
		
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		try {
			cal.setTime(sdf.parse(beginDate));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		num = num + 1;	//把开始和结束日期都包含进去
		
		result = new String[num];
		for(int i=0;i<num;i++){
			if(i>0)	cal.add(Calendar.DAY_OF_YEAR, 1);
			result[i] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从昨天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
	 * @param num
	 * @return
	 */
	public static String[] getDaysByNum(int num){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		
		//最近一周
		result = new String[num];
		for(int i=num;i>0;i--){
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从昨天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
	 * @param num
	 * @return
	 */
	public static String[] getDaysByNum(int num,String date){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
		
		//最近一周
		result = new String[num];
		for(int i=num;i>0;i--){
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从今天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-13、2008-03-14
	 * @param num
	 * @return
	 */
	public static String[] getDaysByBefore(int num,String date){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
		cal.add(Calendar.DAY_OF_YEAR, 1);
		//最近num的日期,包括date日期
		result = new String[num];
		for(int i=num;i>0;i--){	
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
			
		}
		
		return result;
	}

  • DateTool.rar (2.7 KB)
  • 描述: 一个时间类
  • 下载次数: 13
分享到:
评论

相关推荐

    定义一个时间类Time,它能提供由时分秒组成的时间。

    C++上机实验:类的定义与应用。定义一个时间类。

    C++编写一个时间类Time实验报告

    例如,当我们将两个时间对象相加时,使用`+`运算符比调用一个名为“addTime”的函数更直观。C++允许重载的运算符包括大多数二元(双目)和一元运算符,如`+`、`-`、`*`、`/`、`++`、`--`等,但有些不能重载,比如`::...

    c++实验 日期时间类定义

    5. **时间类的设计与实现**:模仿日期类设计一个时间类,实现时间的设置、加减运算以及格式化输出等功能。 ### 二、详细解析 #### 1. 类的基本定义 在C++中,类是一种用户自定义的数据类型,它由一组数据成员和...

    _4_2.rar_controlugp_settime_time类私有数据_声明一个时间_时间类 3私有

    声明一个时间类,时间类中有3个私有数据成员(Hour, Minute, Second)和两个公有成员函数(SetTime和Print_Time)。SetTime根据传递的3个参数为对象设置时间;Print_Time负责将对象表示的时间显示输出.

    定义一个时间类time python

    定义一个时间类time

    分钟秒钟的时间相减 时间类CTime,分钟和秒钟

    定义一个时间类CTime,c。输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计算这两个时间相隔多少秒钟。说明:这两个时间在同一小时之内,且采用60分钟60秒钟的计时分式,即从00:...

    C++课程实验三代码大全.zip

    1 、定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取...

    .NET程序设计 实验名称 实验二 C#面向对象编程

    1.编写一个控制台应用程序,定义并使用一个时间类,该类包含时、分、秒字段与属性,具有将时间增加1秒、1分和1小时的方法,具有分别显示时、分、秒和同时显示时分秒的方法。 2.编写一个控制台应用程序,程序中有两个...

    大部分实验课程试题

    本实验课程试题要求我们定义一个时间类Time,能够提供和设置由时、分、秒组成的时间,并编写应用程序来输出该对象提供的时间。在本实验中,我们将使用C++语言来实现该时间类,并使用多文件编程将类的定义和实现分离...

    一个CTime类.

    一个CTime类.一个CTime类.一个CTime类.一个CTime类.一个CTime类.

    php一个时间类,可以判断多少时间前留言

    一个可以判断多少时间前的类 欢迎大家一起研究

    时间类重载+号

    定义一个时间类用来保存时间,通过重载操作符“+”实现两个时间的相加

    C++实验三.docx

    首先,我们需要定义一个名为`Time`的类,它包含三个私有成员变量`Hour`、`Minute`和`Second`,分别表示小时、分钟和秒。为了能够操作这些成员,我们需要提供公共的构造函数、析构函数以及用于设置、获取和显示时间...

    VC2003一个时间运算类测试工程

    在本文中,我们将深入探讨“VC2003一个时间运算类测试工程”这个主题,它是一个使用Visual C++ .NET 2003编写的软件项目,专注于时间操作的类库封装。这个工程旨在提供一种高效且方便的方式来处理时间的加减运算,这...

    MFC常用类、成员函数、数组类、Cstring类、CTime类、CPoint类

    CTime 类是 MFC 中的一个时间类,提供了许多有用的成员函数,例如: * GetCurrentTime:获取当前时间。 * Set:设置时间。 * GetHour、GetMinute、GetSecond:获取时间的小时、分钟、秒。 例如,我们可以使用 ...

    一个简单的时间格式化工具类

    描述中提到的“博文链接:https://tiantao1812.iteye.com/blog/1493648”,这个链接指向了一个特定的博客文章,虽然没有具体的描述内容,但我们可以推测这篇博客详细介绍了这个时间格式化工具类的设计、实现和使用...

    一个完整的PHP时间类.zip

    标题为"一个完整的PHP时间类.zip"的压缩包文件,很显然包含了一个自定义的时间类,用于扩展PHP的内置功能,提供更方便、灵活的日期和时间操作。 首先,让我们理解PHP中的日期和时间处理基础。PHP内建的DateTime类是...

Global site tag (gtag.js) - Google Analytics