`
mengqingyu
  • 浏览: 329891 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Java日期的转换和运算

阅读更多
import java.sql.Date;   
import java.text.SimpleDateFormat;   
import java.util.Calendar;   

public class Util { 
	/**
	* @function:可以增加日期的天数
	* @param date :日期
	* @param number :需要增加的天数
	* @return
	*/
	public static String addDay(String date, int number) {   
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
	
	    Calendar cd = Calendar.getInstance();   
	    cd.setTime(sdf.parse(date));   
	    cd.add(Calendar.DATE, number);   
	
	    return sdf.format(cd.getTime());   
	}   
  
	/**
	* @function:将字符串转为Calendar类型,可以进行日期比较
	* @param dateTime 默认:当前系统时间
	* @param formatString 默认:yyyy-MM-dd
	* @return
	*/
	public static Calendar formatDateFromStringToCalendar(String dateTime, String formatString)
	{
	Calendar cal = Calendar.getInstance();
	if (dateTime == null || "".equals(dateTime))
		cal.setTime(new Date());
	else
	{
		if(formatString==null || "".equals(formatString))
			formatString = "yyyy-MM-dd";
		SimpleDateFormat df = new SimpleDateFormat(formatString);
		try
		{
			cal.setTime(df.parse(dateTime));
		} catch (ParseException e)
		{
			e.printStackTrace();
		}
	}
	if(formatString==null)
	{
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
	}
	return cal;
	}
	/**
	 * 日期相减运算
	 * 方法一
	 */
	public static long getQuot(String time1, String time2) throws ParseException{
		long quot = 0;
		SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
		Date date1 = ft.parse( time1 );
		Date date2 = ft.parse( time2 );
		quot = date1.getTime() - date2.getTime();
		quot = quot / 1000 / 60 / 60 / 24;
		return quot;
	}
	/**
	 * 日期相减运算
	 * 方法二
	 */
	public long getDateNumber(String date1,String date2)
	{
		int tempStart1 = Integer.parseInt(date1.substring(0,4));
		int tempStart2 = Integer.parseInt(date1.substring(4,6));
		int tempStart3 = Integer.parseInt(date1.substring(6,8));
		
		int tempEnd1 = Integer.parseInt(date2.substring(0,4));
		int tempEnd2 = Integer.parseInt(date2.substring(4,6));
		int tempEnd3 = Integer.parseInt(date2.substring(6,8));
		
		Calendar calendar1 = Calendar.getInstance();
		Calendar calendar2 = Calendar.getInstance();
		
		calendar1.set(tempStart1, tempStart2, tempStart3);//0到11表示1到12月
		calendar2.set(tempEnd1, tempEnd2, tempEnd3);
		long str=calendar2.getTimeInMillis()-calendar1.getTimeInMillis();
		return str/(24*60*60*1000); //返回相差天数
	}

/**
 * 
 * @function:日期加减运算
 * @param time  日期
 * @param format  日期格式
 * @param type  Calendar.YEAR 日期类型
 * @param number 运算数
 * @return
 * @throws BusinessException
 * @author: mengqingyu 2013-8-16 下午01:55:42
 */
public static String getDateNumber(String time, String format, int type, int number) throws BusinessException{
	Calendar cd = Calendar.getInstance();  
	SimpleDateFormat sdf = new SimpleDateFormat(format); 
	try {
		cd.setTime(sdf.parse(time));
	} catch (ParseException e) {
		throw new BusinessException("日期格式错误:"+time,e);
	}
	cd.add(type, -1);
	return sdf.format(cd.getTime());
}
}  


import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 

/** 
* <p>Title: 周计算类,星期一为一周的开始,星期日为一周的结束</p> 
* <p>Description: 在两年的交接地带还有疑问。</p> 
* <p>比如2006-12-29到2009-01-04,属于2008年的最后一周,</p> 
* <p>2009-01-05位2009年第一周的开始。</p> 
* <p>db2种的week_iso也是这样计算的</p> 
* <p>Copyright: Copyright (c) 2006</p> 
* <p>DateTime: 2006-4-11 23:36:39</p> 
* 
* @author gumpgz 
* @version 1.0 
*/ 
public class WeekUtil { 
/** 
* 取得当前日期是多少周 
* 
* @param date 
* @return 
*/ 
public static int getWeekOfYear(Date date) { 
Calendar c = new GregorianCalendar(); 
c.setFirstDayOfWeek(Calendar.MONDAY); 
c.setMinimalDaysInFirstWeek(7); 
c.setTime (date); 

return c.get(Calendar.WEEK_OF_YEAR); 
} 

/** 
* 得到某一年周的总数 
* 
* @param year 
* @return 
*/ 
public static int getMaxWeekNumOfYear(int year) { 
Calendar c = new GregorianCalendar(); 
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59); 

return getWeekOfYear(c.getTime()); 
} 

/** 
* 得到某年某周的第一天 
* 
* @param year 
* @param week 
* @return 
*/ 
public static Date getFirstDayOfWeek(int year, int week) { 
Calendar c = new GregorianCalendar(); 
c.set(Calendar.YEAR, year); 
c.set (Calendar.MONTH, Calendar.JANUARY); 
c.set(Calendar.DATE, 1); 

Calendar cal = (GregorianCalendar) c.clone(); 
cal.add(Calendar.DATE, week * 7); 

return getFirstDayOfWeek(cal.getTime ()); 
} 

/** 
* 得到某年某周的最后一天 
* 
* @param year 
* @param week 
* @return 
*/ 
public static Date getLastDayOfWeek(int year, int week) { 
Calendar c = new GregorianCalendar(); 
c.set(Calendar.YEAR, year); 
c.set(Calendar.MONTH, Calendar.JANUARY); 
c.set(Calendar.DATE, 1); 

Calendar cal = (GregorianCalendar) c.clone(); 
cal.add(Calendar.DATE , week * 7); 

return getLastDayOfWeek(cal.getTime()); 
} 

/** 
* 取得当前日期所在周的第一天 
* 
* @param date 
* @return 
*/ 
public static Date getFirstDayOfWeek(Date date) { 
Calendar c = new GregorianCalendar(); 
c.setFirstDayOfWeek(Calendar.MONDAY); 
c.setTime(date); 
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday 
return c.getTime (); 
} 

/** 
* 取得当前日期所在周的最后一天 
* 
* @param date 
* @return 
*/ 
public static Date getLastDayOfWeek(Date date) { 
Calendar c = new GregorianCalendar(); 
c.setFirstDayOfWeek(Calendar.MONDAY); 
c.setTime(date); 
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday 
return c.getTime(); 
} 

分享到:
评论

相关推荐

    时间日期转换 工具类

    时间日期转换工具类!各种格式各种转换和一些计算 交易日的工具

    java源码包---java 源码 大量 实例

    Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择  Java语言开发的简洁实用的日期选择控件,源码文件功能说明:  [DateChooser.java] Java 日期选择控件(主体类) [public]  ...

    Java获取各种格式的时间

    ①日期的加减运算;②获取各种格式的日期;③java对象日期和数据库日期的各种转化;

    Java开发技术大全(500个源代码).

    narrowingConversion_1.java 缩减转换引发错误示例1 narrowingConversion_2.java 缩减转换引发错误示例2 notMultipleOfThree.java 把100-200之间不能被3整除的数输出 outputByDoWhile.java 用while循环随机输出...

    java获取昨天日期字符串的方法

    主要介绍了java获取昨天日期字符串的方法,涉及java针对日期与时间的运算与转换等相关操作技巧,需要的朋友可以参考下

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中等6章和附录a-c完全可以作为class文件和指令含集的参考手册。本书还附带...

    java获取日期之间天数的方法

    主要介绍了java获取日期之间天数的方法,涉及java针对日期的转换与数学运算相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Java常用的基础类

    它提供了许多有用的方法,例如 parse() 方法可以将字符串转换为日期,format() 方法可以将日期转换为字符串等。 8. Math 类 Math 类是 Java 语言中用于数学运算的类。它提供了许多有用的方法,例如 sqrt() 方法...

    Java2实用教程.rar

    第6章时间 日期和数字 6 1Date类 6 2Calendar类 6 3Math类 6 4BigInteger类 习题 第7章AWT组件及事件处理 7 1Java窗口 7 1 1 Frame常用方法 7 1 2菜单条 菜单 菜单项 7 1 3窗口与屏幕 7 2文本框 7 2 1TextField类的...

    java实现字符串和日期类型相互转换的方法

    主要介绍了java实现字符串和日期类型相互转换的方法,涉及java针对日期与字符串的转换与运算相关操作技巧,需要的朋友可以参考下

    java程序设计实验指导代码

    第1章 Java语言概述和开发环境 1.1 预备知识 1.2 实验1 JDK 5.0路径设置 1.3 实验2 在DOS环境下编译和运行Application和Applet程序 1.4 实验3 在JBuilder 2005中配置JDK 5.0编译环境 1.5 实验4 在JBuilder 2005...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java计算器实验报告(1).doc

    最后通过转化成JS代码运算得到启发,使用类似方法,我还实现了调用VB代码实现计算 器实时读出键盘输入,发出声音。 3. 系统实现:system implementation 1.程序界面展示 4. 总结体会: summary and experience 实验...

    java基础案例与开发详解案例源码全

    2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33 3.1.4 变量应用实例33...

    Java实现的日期处理类完整实例

    主要介绍了Java实现的日期处理类,结合完整实例形式分析了Java针对日期的获取、运算、转换等相关操作技巧,需要的朋友可以参考下

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    JAVA面试题最全集

    简述 Java Server Page 和 Servlet 的联系和区别。 33.简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,...

    Java经典编程源码基础例程300.zip

    实例015 加密可以这样简单(位运算) 20 实例016 用三元运算符判断奇数和偶数 21 实例017 不用乘法运算符实现2×16 22 实例018 实现两个变量的互换 (不借助第3个变量) 23 第4章 流程控制 25 实例019 判断某一年...

    java工具类.zip

    1.利用public static method进行日期格式的转换 2.利用内容的Calendar object进行日期的计算,适合有大量的日期计算,用method 1则效率低的场合 3处理json日期转化问题 4提供高精度的运算支持. 所以函数以double为...

Global site tag (gtag.js) - Google Analytics