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

java有关时间转换的一些方法DateFactory.java

    博客分类:
  • java
阅读更多
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * <p>Title:时间转换类 </p>
 * <p>Description:有关时间转换的一些方法 </p>
 * @author ZZJ
 * @version 1.0
 */

public class DateFactory {

	/**
	 * 根据pattern 转换日期对象为日期字符串,如"yyyy/MM/dd hh:mm:ss"
	 * @param date 日期
	 * @param pattern 日期格式
	 * @return 日期字串
	 */
	public static String getFormatDate(Date date, String pattern) {
		if (date == null) {
			return null;
		}
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		String str = format.format(date);
		return str;
	}

	/**
	 * 根据参数得到当前时间值
	 * @param p (1:年;2:月;3:日;4:小时;5:分钟;6:秒)
	 * @return
	 */
	public static int getTimeValue(int p) {
		Calendar calendar = Calendar.getInstance();
		int result = 0;
		switch (p) {
		case 1:
			result = calendar.get(Calendar.YEAR);
			break;
		case 2:
			result = calendar.get(Calendar.MONTH) + 1;
			break;
		case 3:
			result = calendar.get(Calendar.DATE);
			break;
		}
		return result;
	}

	/**
	 *转换日期对象为日期字符串
	 * @param date 日期对象
	 * @param isFull 是否为完整的日期数据,
	 *               为true时, 格式如"2000-03-05 01:05:04"
	 *               为false时, 格式如 "2000-03-05"
	 * @return 符合要求的日期字符串
	 */
	public static String getSmpFormatDate(Date date, boolean isFull) {
		String pattern = null;
		if (date == null)
			return "";
		if (isFull) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		} else {
			pattern = "yyyy-MM-dd";
		}
		return getFormatDate(date, pattern);
	}

	/**
	 * 转换日期对象为日期字符串,格式如"2000-03-05 01:05:04"
	 * 
	 * @param date 日期对象
	 * @return
	 */
	public static String getSmpFormatDate(Date date) {
		return getSmpFormatDate(date, true);
	}

	/**
	 * 将字符串转换为日期对象
	 * @param dateStr 字符串
	 * @param pattern 日期的pattern
	 * @return 日期对象,不成功则返回 null
	 */
	private static Date convertStrToDate(String dateStr, String pattern) {
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		Date date = null;
		try {
			date = format.parse(dateStr);
		} catch (Exception ex) {

		} finally {
		}
		return date;
	}

	/**
	 * 将字符串转换为日期对象,采用默认的pattern
	 * @param dateStr 字符串
	 * @return 日期对象,不成功则返回 null
	 */
	public static Date convertStrToDate(String dateStr) {
		try {
			String pattern = "";
			if (dateStr.length() <= 10) {
				pattern = "yyyy-MM-dd";
			} else if (dateStr.length() <= 20) {
				pattern = "yyyy-MM-dd HH:mm:ss";
			} else {
				pattern = "yyyy-MM-dd HH:mm:ss.SSS";
			}
			return convertStrToDate(dateStr, pattern);
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * 得到两个时间的差,并以字符串的形式给出
	 * @param dt1
	 * @param dt2
	 * @return
	 */
	public static String getDiffTime(Date dt1, Date dt2) {
		long time = dt2.getTime() / 1000 - dt1.getTime() / 1000;
		String str = "0:0:0";
		if (time > 0) {
			long day = time / 60 / 60 / 24;
			long hour = time / 60 / 60 % 24;
			long minute = time / 60 % 60;
			long second = time % 60;
			if (day > 0) {
				str = "" + day + "d " + hour + ":" + minute + ":" + second;
			} else {
				str = "" + hour + ":" + minute + ":" + second;
			}
		}
		return str;
	}

	/**
	 * 得到时间串精确到毫秒
	 * 
	 * @return
	 */
	public static String getTimeChar() {
		StringBuffer strResponseDate = new StringBuffer();
		try {
			Date date = new Date();
			SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
			format.setLenient(false);

			strResponseDate.append(format.format(date));
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return strResponseDate.toString();
	}

	/**
	 * 计算两个日期间相隔的周数
	 * 
	 * @param startDate
	 *            开始日期
	 * @param endDate
	 *            结束日期
	 * @return
	 */
	public static int computeWeek(Date startDate, Date endDate) {
		int weeks = 1;
		Calendar beginCalendar = Calendar.getInstance();
		beginCalendar.setTime(startDate);
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.setTime(endDate);
		while (beginCalendar.before(endCalendar)) {
			// 如果开始日期和结束日期在同年、同月且当前月的同一周时结束循环
			if (beginCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR)
					&& beginCalendar.get(Calendar.MONTH) == endCalendar.get(Calendar.MONTH)
					&& beginCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) == endCalendar
							.get(Calendar.DAY_OF_WEEK_IN_MONTH)) {
				break;
			} else {
				beginCalendar.add(Calendar.DAY_OF_YEAR, 7);
				weeks += 1;
			}
		}
		return weeks;
	}

	/**
	 * 加减天数
	 * 
	 * @param date
	 * @param d
	 * @return
	 */
	public static Date dateAddOrReduce(Date date, int d) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DATE, d);
		return cal.getTime();
	}

	/**
	 * 根据当前日期获取之后一周的莫一天
	 * @param d 星期数 例如星期一d=1,星期日d=7
	 * @return
	 */
	public static Date getWeekDate(int d) {
		return getWeekDate(new Date(), d);
	}

	/**
	 * 根据指定日期获取之后一周的莫一天
	 * @param d 星期数 例如星期一d=1,星期日d=7
	 * @return
	 */
	public static Date getWeekDate(Date date, int d) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		cal.set(Calendar.DAY_OF_WEEK, d + 1);
		return cal.getTime();
	}
}
分享到:
评论

相关推荐

    26.java自动类型转换.zip

    26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型转换.zip26.java自动类型...

    java音频格式转换工具.zip

    java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式[文].pdf

    Java.util.Date与java.sql.Date的互转及字符串转换为日期时间格式 java.util.Date和java.sql.Date是Java中两个常用的日期时间类,分别属于不同的包。java.util.Date是Java标准库中的日期时间类,而java.sql.Date是...

    java keystore导出.pfx .key .crt 私钥

    Java KeyStore文件转换为微软的.pfx文件和OpenSSL的PEM格式文件(.key + .crt) 运行方式: JKS2PFX 文件&gt; 密码&gt; 别名&gt; &lt;导出文件名&gt; [Java Runtime的目录] Java Runtime的目录,指包含Java.exe和keytool.exe的目录...

    JAVA实现的多计量单位转换.rar

    可能的方法包括`getConversionFactor`,用于获取两个单位间的转换因子,以及`convert`,用于实际的单位转换操作。 **UnitConvertCommon.java**:此文件可能包含了通用的单位转换辅助函数或枚举类型,列举了各种常见...

    地区码与地区名称相互转换java代码11.zip

    在IT行业中,地区码与地区...总之,"地区码与地区名称相互转换java代码11.zip"是一个实用的工具,可以帮助开发者在处理地理位置相关的项目时提高效率。理解并运用这些知识点,可以优化相关功能的实现,提升用户体验。

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    - 描述提到了对这个问题的相关资料进行整理,这意味着该文档将提供如何识别、分析并解决此类问题的方法。 #### 详细解析 **异常出现的原因:** 1. **内存分配不足**:默认情况下,JVM启动时分配的堆内存可能不...

    java.sql.date与java.util.date.pdf

    Java编程语言提供了多种日期时间类来处理不同的场景需求,其中`java.util.Date`和`java.sql.Date`是两个常见的日期类型,它们之间存在一定的差异和转换关系。 `java.util.Date`是Java标准库中的基础日期类,它表示...

    java生成二维码,java将二维码转换成base64

    在IT行业中,二维码作为一种高效的信息编码方式,广泛应用于各种场景,如链接分享、电子票务等。Java作为一款流行的编程语言,提供...理解并掌握这些技术,对于进行Java相关的Web开发或者移动应用开发都是非常有益的。

    JAVA字符串操作类CTool.java字符转换类.rar

    JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...

    JAVA类型转换[文].pdf

    Java 类型转换是编程过程中常见的操作,特别是在处理不同数据类型的变量时。Java 数据类型主要分为三大类:布尔型、字符型和数值型。数值型又细分为整型(byte、short、int、long)和浮点型(float、double)。此外...

    Struts的java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决方法

    在Java Web开发中,Struts框架是一个非常流行的MVC(模型-视图-控制器)架构,用于构建可维护性高、结构清晰的Web应用程序。然而,对于初学者来说,遇到错误是常有的事,比如“java.lang.ClassNotFoundException: ...

    java调用视频转换工具ffmpeg.zip

    Java调用视频转换工具FFmpeg是一项常见的任务,特别是在多媒体处理和流媒体服务中。FFmpeg是一个强大的跨平台命令行工具,用于转换、流化、编辑和处理音频和视频文件。在Java应用程序中集成FFmpeg,可以实现灵活的...

    Java_Spire_Office_jar.zip

    Spire.Office for Java 是一套企业级的涵盖 E-iceblue 所有 Java组件的集合,它包括以下产品的最新版本:Spire.Doc for Java, Spire.XLS for Java,Spire.Presentation for Java, Spire.PDF for Java 和 Spire....

    java 时间转换工具

    1.支持java.sql.Date 与 java.util.Date互转 2.支持java.util.Calendar,java.util.Date,java.sql.Date格式化输出 3.支持字符串转java.util.Date 支持字符串格式: yyyyMMdd yyyyMMddHH yyyyMMddHHmm ...

    Java Bean对象和Map相互转换.zip

    转换回Java Bean需要创建一个新的Bean实例并设置属性值,因为BeanMap不直接提供反向转换的方法。你可以遍历Map并使用反射API来设置Bean的属性: ```java MyBean myBean = new MyBean(); for (Object key : bean...

    Java时间格式转换大全

    它可以将日期/时间转换为字符串,也可以将符合特定模式的字符串转换为日期/时间。其构造方法接受一个模式字符串作为参数,该模式定义了日期/时间的显示格式。 #### 2. 时间格式模式 `SimpleDateFormat`支持多种...

Global site tag (gtag.js) - Google Analytics