`
wesker0918
  • 浏览: 42822 次
  • 性别: Icon_minigender_1
  • 来自: 山东->北京
社区版块
存档分类
最新评论

Java中日期操作函数

阅读更多

1.计算某一月份的最大天数

Calendar time = Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0         
intday = time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

 

注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

 
(2) Date转化为Calendar

Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);

 
3.格式化输出日期时间

Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddhh:mm:ss");
System.out.println(df.format(date));

 
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno = cal.get(Calendar.WEEK_OF_YEAR);

 
(2)计算一年中的第几星期是几号

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));

 

输出:
2006-01-02

 

5.add()和roll()的用法
(1)add()方法

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date = cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));

 
输出:
   2006-08-30
   2006-09-03
(2)roll方法

cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date = cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));

 
输出:
   2006-09-29
   2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;

 

6.计算两个任意时间中间的间隔天数
(1)传进Calendar对象

/**计算两个时间之间相隔天数
* @param startday  开始时间
* @param endday 结束时间
* @return
*/
public int getIntervalDays(Calendar startday,Calendar endday){
	//确保startday在endday之前
	if(startday.after(endday)){
		Calendar cal=startday;
		startday=endday;
		endday=cal;
	}

	//分别得到两个时间的毫秒数
	long sl=startday.getTimeInMillis();
	long el=endday.getTimeInMillis();

	long ei=el-sl;    

	//根据毫秒数计算间隔天数
	return (int)(ei/(1000*60*60*24));
}

 

(2)传进Date对象

/**计算两个时间之间相隔天数
* @param startday  开始时间
* @param endday 结束时间
* @return
*/
public int getIntervalDays(Date startday,Date endday){
	//确保startday在endday之前
	if(startday.after(endday)){
		Date cal = startday;
		startday = endday;
		endday = cal;
	}

	//分别得到两个时间的毫秒数
	long sl = startday.getTime();
	long el = endday.getTime();

	long ei=el-sl;    

	//根据毫秒数计算间隔天数
	return (int)(ei/(1000*60*60*24));
}

 

同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等
注:以上方法是完全按时间计算,有时并不能令人满意,如:
startday="2006-10-11 20:00:00"
endday="2006-10-12 8:00:00"
计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:
在传参之前,先设定endday的时间,如:

endday.set(Calendar.HOUR_OF_DAY, 23);
endday.set(Calendar.MINUTE, 59);
endday.set(Calendar.SECOND, 59);
endday.set(Calendar.MILLISECOND, 59);

 

这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:

(3)改进精确计算相隔天数的方法

public int getDaysBetween (Calendar d1, Calendar d2){
	if (d1.after(d2)){  // swap dates so that d1 is start and d2 is end
		java.util.Calendar swap = d1;
		d1 = d2;
		d2 = swap;
	}

	int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
	int y2 = d2.get(Calendar.YEAR);

	if (d1.get(Calendar.YEAR) != y2){
		d1 = (Calendar) d1.clone();
		do{
			days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
			d1.add(Calendar.YEAR, 1);
		} while (d1.get(Calendar.YEAR) != y2);
	}
	return days;
}

 

分享到:
评论

相关推荐

    java日期时间操作函数代码

    在提供的文件`www_elanso_com.mht`中,可能包含了一些具体的Java日期时间操作的实例代码,包括但不限于上述介绍的功能。MHT文件是单一网页档案,通常用来保存网页的完整内容,包括HTML、图像和其他资源。如果这个...

    java中时间操作函数

    Java 中时间操作函数 Java 中对于时间操作的一些函数,应该在实际项目中经常会用到。下面将对其中的一些函数进行详细的介绍。 计算某一月份的最大天数 在 Java 中,可以使用 `Calendar` 对象来计算某一月份的最大...

    java日期类函数方法整理

    根据给定的文件信息,...以上就是对Java日期类函数方法的整理和解释,涵盖了基本的日期操作,包括日期的格式化、解析、转换以及年份和月份的获取等。掌握这些函数和方法,能够帮助开发者更高效地处理日期相关的任务。

    Java获取各种日期的函数(方法).docx

    Java日期操作函数详解 Java语言中日期操作函数是非常重要的一部分,日期操作函数可以帮助开发者快速获取和处理日期相关的信息。本文将对Java日期操作函数进行详细的介绍和分析。 1. 日期操作函数的基本概念 在...

    java日期函数示例

    ### Java日期函数示例 #### 一、Java日期与时间元素表示法 Java 提供了丰富的日期和时间处理功能,其中 `SimpleDateFormat` 类用于格式化和解析日期字符串。下面是一些常用的时间元素及其对应的表示方式: - **G*...

    DateUtil.Java 日期时间操作函数库代码.rar

    一个Java 日期时间操作函数集 DateUtil.java代码,用于时间和日期操作的工具类,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法,格式化后的系统当前时间,如果有异常产生,返回...

    java日期格式函数的用法与实例

    在Java编程语言中,日期和时间的处理是常见的任务,涉及到很多实用的函数。本文将深入探讨`java.util.Date`类以及与其相关的日期格式化函数的使用方法,并通过实例进行详细解析。 首先,我们了解`java.util.Date`是...

    java时间操作函数汇总

    ### Java时间操作函数详解 #### 一、计算某一月份的最大天数 在Java中,`Calendar`类提供了获取特定月份最大天数的功能。这在处理日期逻辑时非常有用,例如判断一个月份有多少天。 ```java Calendar time = ...

    Java常用函数大全

    在Java编程语言中,函数是实现特定功能的代码块,可以被多次调用。下面将分别介绍标题和描述中提到的一些重要函数,并结合压缩包内的文件名称,详细讲解相关类和方法。 1. **BSDate.java**: 这个文件很可能包含了...

    java中关于时间日期操作的常用函数

    ### Java中关于时间日期操作的常用函数 #### 1. 计算某一月份的最大天数 在Java中,可以通过`Calendar`类来获取指定月份的最大天数。这在处理诸如日历显示、日期验证等场景时非常有用。 ```java Calendar time = ...

    java函数速查中文版

    2. **字符串处理**:String类是Java中常用的一个类,包含大量的字符串操作函数,如substring()、indexOf()、concat()等。 3. **集合框架**:包括List、Set、Map等接口及其实现类如ArrayList、HashSet、HashMap。速...

    java函数中文速查手册

    Java函数涵盖了类库中的各种方法,包括但不限于基础数据类型的操作、集合框架、IO流、多线程、网络编程、反射、异常处理等。例如,`Math`类提供了许多数学运算函数,如`sqrt()`用于计算平方根,`random()`用于生成...

    操作日期的java包

    Joda-Time是Java领域广泛使用的日期时间处理库,它的设计目标是替代Java标准库中的日期和时间API,因为后者在设计上存在一些问题,如可读性差、易用性不足等。Joda-Time提供了丰富的类和方法,使得日期时间的计算、...

    java操作日期时间工具类

    在Java编程语言中,处理日期和时间是一项常见的任务。Java提供了多种工具类来帮助开发者进行日期时间的操作,其中最常用的是`java.util.Date`、`java.util.Calendar`以及`java.time`包中的类。本篇将重点介绍Java...

    Java常用函数速查表

    9. **日期和时间API**:Java 8引入了新的日期和时间API(java.time包),如`LocalDate`、`LocalTime`和`LocalDateTime`,提供了更加友好的日期和时间操作,如`plusDays()`增加天数,`parse()`解析日期字符串,以及`...

    java常用函数API经常用的

    在Java编程语言中,函数API(Application Programming Interface)是一组预先定义的方法,允许开发者执行特定任务,如数据处理、输入/输出操作等。本篇文章将深入探讨Java中一些常用的函数API,尤其是那些在日常开发...

    Java 8函数式编程.rar

    Java 8是一个重要的Java语言版本,它引入了对函数式编程的支持,极大地提升了代码的简洁性和可读性,特别是对于集合操作。函数式编程是一种编程范式,它将计算视为函数的组合,而不是状态的改变或控制流程。在Java 8...

    Java函数包 API

    Java函数包API是Java开发中的核心组成部分,它包含了大量预定义的类和接口,为开发者提供了丰富的功能,便于构建各种应用程序。这些API覆盖了输入输出、网络通信、数据处理、图形用户界面(GUI)等多个领域,是Java...

    java常用函数.doc

    本篇将深入讲解Java中涉及字符串、包装类、日期处理、基础数学操作以及其他实用工具类的相关函数,以及GUI组件如文本框、文本区、按钮和标签的使用。 首先,我们关注字符串处理。Java中的`String`类提供了丰富的...

    Java API函数大全

    通过以上详细的介绍,我们可以看到Java API中包含了丰富的文件操作和进程间通信相关的函数,这些函数为Java开发者提供了强大的工具,使得他们能够更加高效地完成各种任务。深入理解和熟练运用这些API,不仅能够提升...

Global site tag (gtag.js) - Google Analytics