`

JAVA 日期加减

    博客分类:
  • Jave
阅读更多

/**
	 * 计算前一天 、后一天
	 * 
	 * @param date 当前输入的日期 格式为 2010-01-21
	 * @param amount
	 * @return
	 */
	public static String getYesterday(String date, int amount) {
		String newDate = Constant.EMPTY_STRING;
		if (date != null) {
			DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			Date dd;
			try {
				dd = format.parse(date);
				Calendar calendar = Calendar.getInstance();
				calendar.setTime(dd);
				calendar.add(Calendar.DAY_OF_MONTH, amount);
				newDate = format.format(calendar.getTime());

			} catch (ParseException e) {
				e.printStackTrace();
			}

		}
		return newDate;
	}



/**
	 * 计算两天之间相差的天数 调用此方法必须保证 时间格式与 timeFormatStr指定格式一致 否则异常
	 * 
	 * @param beginDate 开始时间
	 * @param endDate 结束时间
	 * @param timeFormatStr  输入时间格式
	 * @return int 时间相差天数
	 */
	public static int getCountDays(String beginDate, String endDate, String timeFormatStr) {
		int days = 0;

		if (beginDate != null && endDate != null && timeFormatStr != null) {
			SimpleDateFormat dateFormat = new SimpleDateFormat(timeFormatStr);
			Calendar beginCalendar = Calendar.getInstance();
			Calendar endCalendar = Calendar.getInstance();

			try {
				endCalendar.setTime(dateFormat.parse(endDate));
				beginCalendar.setTime(dateFormat.parse(beginDate));
				while (beginCalendar.before(endCalendar)) {
					days++;
					beginCalendar.add(Calendar.DAY_OF_YEAR, 1);
				}
			} catch (ParseException e) {
				// 日期格式异常
				logger.error("getCountDays failed the" + beginDate + "or" + endDate + "is not format"
						+ timeFormatStr, e);
			}
		}
		return days;
	}


/** 取近期一年的数据*/
	public static List<String> getYears() {
		List<String> result = new ArrayList<String>();
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, Integer.parseInt(DateUtil.getSysDate("yyyy")));
		c.set(Calendar.MONTH, Integer.parseInt(DateUtil.getSysDate("MM")));

		result.add(DateUtil.getSysDate("yyyyMM"));

		for (int i = 0; i < 11; i++) {
			c.add(Calendar.MONTH, -1);
			int y = c.get(Calendar.YEAR);
			int m = c.get(Calendar.MONTH);

			if (m == 0) {
				result.add((y - 1) + "12");
			} else {
				if (m < 10)
					result.add(y + "0" + m);
				else
					result.add(y + (m + ""));
			}
		}
		return result;
	}

	/** 取上个月 */  
	public static String getPrevMonth(String yearMonth) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
		Calendar calendar = Calendar.getInstance();
		Date curDate = java.sql.Date.valueOf(yearMonth + "-10");
		calendar.setTime(curDate);
		// 取得现在时间
		// System.out.println(sdf.format(curDate));

		// 取得上一个时间
		calendar.set(Calendar.MONDAY, calendar.get(Calendar.MONDAY) - 1);

		// 取得上一个月的下一天
		calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
		return sdf.format(calendar.getTime());
	}

	/** 取当月下的最后第一天 */
	public static void getLastDay(String yearMonth) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(java.sql.Date.valueOf(yearMonth + "-01"));

		cal.roll(Calendar.DAY_OF_MONTH, -1);
		System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()));
	}

	/** 取当月下的第一天 */
	public static void getFirstDay(String yearMonth) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(java.sql.Date.valueOf(yearMonth + "-01"));
		cal.set(Calendar.DAY_OF_MONTH, 1);
		System.out.println(new SimpleDateFormat(DEFAULT_DATE_FORMAT).format(cal.getTime()));
	}


/**
	 * 日期按小时加减
	 *  
	 */
	public static void dateByHour(int hourNumber) throws ParseException {
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		
		String time="2016-08-02 20:00:00";
		
		Date date=sdf.parse(time);
		long nh = 1000*60*60*hourNumber; 
		//long nh = 1000*60*60*8;//8小时的毫秒数
		
		long te=date.getTime()+nh; 
		
		sdf.format(te); //时间转换成字符
	
		sdf.parse(sdf.format(te));//字符转换成时间
		
	}

分享到:
评论

相关推荐

    java对日期的加减操作

    Java 日期加减操作详解 Java 中对日期的加减操作是指对日期的加减、年、月、日、天等操作。Java 提供了多种方式来实现日期的加减操作,本文将详细介绍其中的两种方法。 使用 java.util.Calender 实现日期加减 ...

    日期类的加减及java中日期类的操作算法大全

    曾经我不太会日期类的算法,通过学习后总结了一些,有好用的东西是要分享给大家的,希望大家也能学的越来越好。

    日期类的加减及java中所以日期类的操作算法大全

    本文将深入探讨Java中的日期类操作,包括日期的加减运算,以及如何利用不同的日期类进行高效的时间管理。 ### 一、日期类的基本操作 #### 1. 使用Calendar类 `Calendar`类是Java中处理日期和时间的核心类之一,它...

    日期加减天数后的日期

    日期加减天数后的日期 。。日期操作。。。初学者学习

    日期加减java源码

    课堂作业,一个类用于加减日期,有方法setDate(),SeeDate(),AddDate(),SeeDate()返回一个字符串,AddDate()用于增加或减少日期,可以处理公元前,只要在int范围内都可

    日期操作,转日期格式,加减日期,日期详解

    在提供的文件列表中,DateAccount.java可能是包含日期操作逻辑的Java源代码文件,而加减日期.txt和转日期格式.txt很可能是详细说明这些操作的文本文件。通过阅读这些文件,你可以更深入地理解如何在实际代码中实现...

    java 日期相加减.doc

    #### 一、利用`java.util.Calendar`进行日期加减 在Java中,`java.util.Calendar`是一个非常强大的类,用于处理与日期和时间相关的各种操作,包括日期的加减。`Calendar`类提供了一系列的方法来获取、设置和操作...

    java Calender类 日期的加减.docx

    Java 中的 Calendar 类提供了日期和时间的操作功能,本文将对 Calendar 类的日期加减操作进行详细的介绍和分析。 Calendar 类的日期加减操作 Calendar 类的日期加减操作可以通过 set() 方法实现,例如,设置当前...

    时间计算加减

    课程笔记:时间戳和int类型的数值进行加减,获得date类型的日期,及时间格式的转换

    日期类加减的年月日版本

    在实际开发中,日期加减常用于计算有效期、计划任务、日历应用等场景。例如,计算信用卡到期日、确定项目交付期限、规划节假日等。 10. **最佳实践**: 使用日期类时,应遵循良好的编程习惯,如避免使用字符串...

    java 日期算法

    Java 日期算法大全 Java 中日期类操作算法大全是 Java ...Java 日期算法大全涵盖了日期类的基本操作、日期类的加减、日期类的格式化输出、日期类的计算等多个方面的知识点,为开发者提供了详细的Java日期算法指南。

    hive时间按月份加减UDF

    例如,`SELECT add_months(date_column, 3) FROM table` 将会返回date_column字段的日期加3个月的结果。 在实际应用中,你可能还需要考虑一些复杂情况,如闰年、月份天数不一致等问题。对于UDF的实现,你可能需要...

    java 日期选择控件DateChooser

    7. 额外功能:某些实现可能包含其他特性,如日期范围选择、日期计算(加减日期)以及与数据库或其他数据源的集成。 在Java开发中,DateChooser控件可以使用第三方库来实现,比如JCalendar库中的JDateChooser,它是...

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    java 日期帮助类

    3. **日期加减操作**: - `addDays(Date date, int days)`:在日期上增加或减少指定天数。 - `addMonths(Date date, int months)`:在日期上增加或减少指定月数。 - `addYears(Date date, int years)`:在日期上...

    java日期处理大全

    2. **使用roll()方法**:不会考虑日期边界,适用于精确控制日期加减,如需保持在同一个月,即使加上的天数超过当月天数也会停留在该月最后一天。 ```java cal.roll(Calendar.DATE, -4); // 减去4天 cal.roll...

    java日期时间操作函数代码

    3. **日期时间计算**:在旧API中,可以使用`Calendar`类进行日期时间的加减操作。例如,增加一天:`Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, 1); Date newDate = calendar...

    java日期转化操作大全

    在Java 8之前,日期的加减运算相对复杂,通常需要结合`Calendar`类。自Java 8起,`TemporalAdjusters`和`Period`类提供了更直观的方法。 1. 使用`Calendar`类进行加减: ```java Calendar calendar = Calendar....

    java语言日期处理大全

    例如,可以使用`LocalDate.now()`获取当前日期,`LocalDate.plusDays()`进行日期加减等。 10. **时区处理**: 如果需要处理不同的时区,可以使用`ZoneId`和`ZonedDateTime`类,它们允许你在处理日期和时间时考虑到...

    JAVA日期操作类详细讲解

    在日期运算中,`java.time`包提供了`plusDays()`, `minusMonths()`, `until()`等方法,使得日期的加减运算变得直观且方便。另外,`TemporalAdjusters`接口提供了一些实用的调整器,比如`firstDayOfMonth()`和`...

Global site tag (gtag.js) - Google Analytics