`
mengqingyu
  • 浏览: 329139 次
  • 性别: 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开发技术大全(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针对日期的转换与数学运算相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    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入门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基础案例与开发详解案例源码全

    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面试题最全集

    简述 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为...

    学通Java的24堂课

    1.5.2 情景应用2——输出当前日期 19 1.5.3 情景应用3——在控制台接收用户输入数字 20 1.5.4 情景应用4——计算用户输入数字的乘积 21 1.6 自我测试 22 1.7 行动指南 23 1.8 成功可以复制——“盖茨第二” 23 ...

Global site tag (gtag.js) - Google Analytics