`
lihua-he
  • 浏览: 103053 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

获取日期差值

 
阅读更多
public class CalendarTest {
	/**
	 * 获取日期差值
	 * @param sdate1 起始日期
	 * @param sdate2 结束日期
	 * @param fmt 日期格式
	 * @param tz 时区
	 * @param 差值类型(1:天,2:周,3:月,4:年,5:小时)
	 * */
	public static int getDateDiff(String sdate1,String sdate2,String fmt,TimeZone tz,int type) {
			SimpleDateFormat df = new SimpleDateFormat(fmt);

			Date date1 = null;
			Date date2 = null;

			try {
				date1 = df.parse(sdate1);
				date2 = df.parse(sdate2);
			} catch (ParseException pe) {
				pe.printStackTrace();
			}

			Calendar cal1 = null;
			Calendar cal2 = null;

			if (tz == null) {
				cal1 = Calendar.getInstance();
				cal2 = Calendar.getInstance();
			} else {
				cal1 = Calendar.getInstance(tz);
				cal2 = Calendar.getInstance(tz);
			}

			// different date might have different offset
			cal1.setTime(date1);
			long ldate1 =
				date1.getTime()
					+ cal1.get(Calendar.ZONE_OFFSET)
					+ cal1.get(Calendar.DST_OFFSET);

			cal2.setTime(date2);
			long ldate2 =
				date2.getTime()
					+ cal2.get(Calendar.ZONE_OFFSET)
					+ cal2.get(Calendar.DST_OFFSET);

			// Use integer calculation, truncate the decimals
			int hr1 = (int) (ldate1 / 3600000); //60*60*1000
			int hr2 = (int) (ldate2 / 3600000);

			int days1 = (int) hr1 / 24;
			int days2 = (int) hr2 / 24;

			int hourDiff = hr2 - hr1;
			int dateDiff = days2 - days1;
			int weekOffset =
				(cal2.get(Calendar.DAY_OF_WEEK)
					- cal1.get(Calendar.DAY_OF_WEEK))
					< 0
					? 1
					: 0;
			int weekDiff = dateDiff / 7 + weekOffset;
			int yearDiff = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR);
			int monthDiff =
				yearDiff * 12
					+ cal2.get(Calendar.MONTH)
					- cal1.get(Calendar.MONTH);

			switch (type) {
				case 1 :
					return dateDiff;
				case 2 :
					return weekDiff;
				case 3 :
					return monthDiff;
				case 4 :
					return yearDiff;
				case 5 :
					return hourDiff;
				default :
					return 0;
			}
	}
	
	public static void main(String[] args){
		System.out.println(getDateDiff("2010-03-22","2011-03-27","yyyy-MM-dd",null,1));
	}
}

 

分享到:
评论

相关推荐

    使用js计算日期之间的差值

    使用js计算日期之间的差值不使用内置方法,无兼容问题,建议JS新手学习使用

    Js获取当前日期时间及格式化代码

    标签中的知识点:涉及到Js在获取日期时间方面相关的几个关键功能和方法,包括获取年份、月份、日、星期、时间等,以及日期时间的格式化方法。 详细知识点介绍: 1. 获取当前日期和时间: - JavaScript中的Date...

    LocalDate类获取日期和改变日期

    - 可以通过静态方法`now()`获取当前日期。 - 使用`of(int year, int month, int dayOfMonth)`方法指定年、月、日创建日期。 - `ofEpochDay(long epochDay)`根据历元日(从公元1970年1月1日到指定日期的总天数)...

    C#获取当前各种格式日期

    3. **获取日期的各部分** - 可以通过 `DateTime` 对象的属性来获取年、月、日等信息,例如: ```csharp int year = DateTime.Now.Year; int month = DateTime.Now.Month; int day = DateTime.Now.Day; ``` 4....

    js代码-两个日期差值

    它可能包含了获取用户输入的日期、解析日期字符串、计算日期差值并展示结果的逻辑。`README.txt`文件可能包含了关于如何使用这个脚本、输入格式以及输出的说明。 总的来说,JavaScript提供了强大的日期处理能力,...

    windows下c语言获取日期时间的类

    在Windows环境下进行C语言编程时,获取日期和时间是一项常见的任务。这个类提供了一种方便的方式来获取和操作系统时间,而无需依赖MFC(Microsoft Foundation Classes)库中的CTime类。MFC虽然提供了丰富的功能,但...

    Java日期工具类

    10、获取当前日期减去参数天数之后的日期 11、判断传入年份是否为闰年 12、获得日期所在季度第一个月或最后一个月 13、在当前日期的基础上增加传入参数的天数 14、在当前日期的基础上增加传入参数的月数 15、在当前...

    Javascript日期差值显示库timespanjs.zip

    timespanjs 是实现日期差值的人性化显示的 Javascript 库。比如,可以显示成:2年2个月2小时4分钟23秒。同时支持国际化,可扩展。已经支持的语言: 中文简体(zh-cn) 中文繁体(zh-tw) ...

    使用Month Calendar获取日期

    例如,可以将用户选择的日期传递给数据库进行记录,或者根据用户选择的日期执行特定的操作,如计算两个日期之间的差值。 总的来说,使用Month Calendar控件能够方便地实现用户友好的日期选择功能,通过处理其事件并...

    c#获取当前日期时间

    - `datediff()`:计算两个日期之间的差值,如`datediff(yy, getdate(), '2008-08-08')`。 - `datename()` 和 `datepart()`:分别返回日期的某个部分的名称和数值。 在实际开发中,这些方法和属性可以灵活组合,...

    Android 获取2个日期相差天数

    在Android开发中,有时我们需要计算两个日期之间的差值,例如计算两个生日之间相差多少天,或者确定一个事件距离现在还有多少天。这个任务可以通过编程实现,本文将详细讲解如何在Android环境中获取两个日期相差的...

    JS简单获取日期相差天数的方法

    在处理日期时,我们常用的方法包括日期的创建、获取日期的各个组成部分(如年、月、日、时、分、秒)以及日期的比较。 在本例中,我们首先定义了两个日期字符串,s1代表我们需要比较的第一个日期,s2代表当前日期。...

    VCMFC求系统当前时间与已保存的时间的差值

    可以通过`CTimeSpan`对象的成员函数来获取具体的时间单位差值,例如获取分钟数。 ```cpp int iMinute = timeSpan.GetMinutes(); ``` `GetMinutes()`函数返回的是时间差中分钟的数量。 ### 六、总结 通过上述步骤,...

    Date-Picker:这是一个实现moment.js的工具,用于计算日期之间的时间差

    要使用这个日期选择器,开发者需要将`index.html`、`script.js`、`style.css`以及`moment.js`引入到他们的项目中,并根据实际需求调整JavaScript代码以获取日期差值。如果需要自定义界面或者添加额外功能,可以对`...

    SQL日期获取技巧大全

    最后,`DATEPART()`函数可以用来获取日期中的特定部分,例如`weekday`或`week`可以获取一周中的哪一天(1-7,1为星期日),`dw`同样可以获取星期几,而`week`或`wk`则返回一年中的第几周。 通过以上SQL语句,你可以...

    获取c#当前日期是星期几

    此外,C#还提供了其他处理日期和时间的方法,例如计算两个日期之间的差值、格式化日期输出、解析日期字符串等。在实际开发中,我们常常会结合这些方法来处理日期相关的业务逻辑。 例如,如果你想要获取某个特定日期...

    PowerBuilder常用日期时间函数

    **功能:** 获取日期中的年份。 **参数:** date 类型的值。 **返回值:** Integer 类型,代表 date 参数中的年份,采用四位数字表示。若发生错误则返回 1900。 **用法示例:** 在 PowerBuilder 中,如果年份由两位...

    Delphi 计算两个日期之间的时间差(天数).rar

    3. **计算差值**:使用减法操作符 `-` 直接计算两个日期之间的差值。这将返回一个双精度浮点数,代表两个日期之间的总天数。 ```delphi var DiffDays: Double; DiffDays := Date2 - Date1; ``` 4. **处理结果*...

    计算日期差

    为了得到更精确的日期差值,Java 8引入了`java.time`包,其中的`LocalDate`、`LocalDateTime`和`Duration`类提供了更现代且易用的日期时间操作。如果你的项目使用的是Java 8及以上版本,推荐使用这些类。 总的来说...

    mysql取得两个时间之间的差值

    在MySQL数据库中,获取两个时间之间的差值是一项常见的操作,特别是在数据分析、日志记录或时间戳处理等场景中。这个任务可以通过SQL查询语句轻松完成。以下将详细讲解如何使用MySQL来计算时间差值。 首先,我们...

Global site tag (gtag.js) - Google Analytics