`
mengqingyu
  • 浏览: 333913 次
  • 性别: 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中,日期对象可以通过`java.util.Date`类或`java.time`包中的类来创建。`Date`类是较早的API,而`java.time`包(自Java 8引入)...

    java日期计算

    根据给定文件的信息,我们可以总结出以下几个关于Java日期计算的关键知识点: ### 1. 获取某个月的最大天数 为了获取某个月的最大天数,我们可以通过`Calendar`类来进行操作。首先,我们需要创建一个`Calendar`...

    JAVA日期操作类详细讲解

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

    应用java实现日期型字符串和日期之间的相互转换(源代码)

    在Java编程语言中,日期和时间的处理是一个常见的任务,特别是在开发各种应用程序时。本组件专注于日期型字符串与日期对象之间的转换,这对于数据输入、输出、存储和展示至关重要。下面我们将详细探讨这个主题,以及...

    操作日期的java包

    Java编程语言在处理日期和时间时,虽然内建了`java.util.Date`和`java.util.Calendar`类,但它们的使用并不总是那么直观和高效。为了解决这个问题,社区开发了Joda-Time库,它提供了更为强大且易用的日期时间操作...

    java语言日期处理大全

    以下是一些关于Java日期处理的关键知识点,这些知识点在给定的文件中有所提及: 1. **获取当前日期**: Java通过`java.util.Date`类可以获取服务器上的当前日期。创建一个Date对象即会返回当前系统时间,如`Date ...

    java所有可能的日期操作封装

    Java日期操作是编程中常见的需求,它涉及到对时间的处理、日期格式化、日期比较以及时间戳转换等。Java提供了一系列强大的API来处理日期和时间,主要包括`java.util.Date`、`java.util.Calendar`、`java.text....

    java版日期计算器

    在Java编程语言中,日期和时间的处理是程序员日常工作中不可或缺的一部分。"Java版日期计算器"通常是指一个程序或库,用于执行各种日期相关的运算,如添加、减去天数、计算两个日期之间的差值等。Java提供了多种API...

    Java日期转换

    这篇博客"Java日期转换"探讨了如何在Java中有效地进行日期的转换和操作。以下是对这个主题的详细阐述。 1. **基础概念** - **日期类**:在Java中,`java.util.Date`是最基本的日期类,它表示特定的瞬间,精确到...

    java 日期计算

    下面我们将深入探讨相关的Java日期处理知识。 Java中的日期和时间API主要有两个版本:一个是早期的`java.util.Date`和`java.util.Calendar`类,另一个是Java 8引入的`java.time`包,包含`LocalDate`, `LocalTime`, ...

    JAVA_日期格式化

    - `SimpleDateFormat`的`format`方法用于将日期转换为字符串,如`SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = formatter.format(date);` - `DateTimeFormatter`的用法...

    Java_Date_日期时间整理

    Java_Date_日期时间整理 Java 中的日期时间处理是非常重要的,以下是 Java 中日期时间整理的知识点总结: ...通过上述知识点,我们可以看到 Java 中日期时间处理的多样性和灵活性,可以满足不同的应用场景需求。

    最全的java时间(日期)工具类

    例如,你可以使用`LocalDateTime.now()`获取当前日期和时间,或者通过`plusDays()`、`minusHours()`等方法进行日期时间的加减运算。`DateTimeFormatter`类用于格式化和解析`java.time`对象,比`SimpleDateFormat`更...

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

    此外,比较两个日期也很常见,可以通过将日期转换为毫秒数来进行比较: ```java Date date1 = new Date(); Date date2 = new Date(); if (date1.getTime() &gt; date2.getTime()) { System.out.println("date1 is ...

    C#JAVA日期算法

    万年历系统通常需要处理公历中的各种日期转换,包括农历、节气、节假日等。在C#中,可以使用第三方库如Noda Time来支持复杂的日期计算,而在Java中,可以使用`java.time.chrono.Chronology`和`java.time.chrono....

    Java日期时间常见面试题及答案

    1. **Java日期时间类**:Java标准库中的日期时间类,如`java.util.Date`、`java.util.Calendar`以及Java 8引入的`java.time`包,用于表示和操作日期和时间。 2. **获取当前日期和时间**:通过`java.util.Date`的无...

    常用代码:java日期处理

    这篇博客"常用代码:java日期处理"很可能包含了关于如何在Java中有效地处理日期的实用示例和方法。这里我们将深入探讨Java日期处理的核心概念、API和最佳实践。 1. **Java日期API的发展历程** - Java 1.0引入了`...

    Java日期时间处理类 date4j

    Java日期时间处理在编程中是一项常见任务,但Java标准库中的`java.util.Date`和`Calendar`类在使用上往往被认为复杂且不直观。为了解决这个问题,`date4j`库应运而生,它提供了更为简洁和现代的方式来处理日期和时间...

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

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

    java日历及贷款计算器

    在Java编程语言中,日历(Calendar)类是处理...开发者可能需要对Java日期API有深入理解,并能编写复杂的金融计算算法。通过这个项目,可以学习到如何在实际应用中使用Java进行日期操作以及实现一个实用的金融工具。

Global site tag (gtag.js) - Google Analytics