`

Date Timestamp Calendar String的转换

    博客分类:
  • Date
 
阅读更多

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.lang.time.DateFormatUtils;


/**
 * $Id: DateUtils.java 2450 2006-11-03 03:16:53Z robin $
 * 
 * @author robin
 * 
 */
public class DateUtils {
	public static final long ONE_DAY_LONG = 86400000;
	private static DateUtils classInstance = new DateUtils();

	public static DateUtils getInstance() {
		return classInstance;
	}

	
	/**
	 * Timestamp时间类型转换String
	 *  Created on 2014-6-6 
	 * <p>Discription:[]</p>
	 * @author:[]
	 * @update:[日期YYYY-MM-DD] [更改人姓名]
	 * @param time
	 * @param pattern
	 * @return String
	 */
	public static String timestamp2string(Timestamp time, String pattern) {
		Date d = new Date(time.getTime());

		if (pattern == null) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		return DateFormatUtils.format(d, pattern);
	}

	/**
	 * Date时间类型转换String
	 *  Created on 2014-6-6 
	 *  时间格式yyyy-MM-dd HH:mm
	 * @param date
	 * @param pattern
	 * @return String
	 */
	public static String formatDate(Date date, String pattern) {
		if (date == null) {
			date = new Date(System.currentTimeMillis());
		}

		if (pattern == null) {
			pattern = "yyyy-MM-dd HH:mm";
		}
		return DateFormatUtils.format(date, pattern);
	}
	
	/**
	 * date传null获取当前时间
	 * 时间格式yyyy-MM-dd HH:mm
	 *  Created on 2014-6-6 
	 * @param date
	 * @return String
	 */
	public static String defaultFormat(Date date) {
		return formatDate(date, null);
	}

	/**
	 * 获取当前时间Date类型
	 *  Created on 2014-6-6 
	 * @return Date
	 */
	public static Date parseDateFormat() {
		SimpleDateFormat fo = new SimpleDateFormat();
		Date date = new java.util.Date(System.currentTimeMillis());
		fo.applyPattern("yyyy-MM-dd");

		try {
			date = fo.parse(DateFormatUtils.format(date, "yyyy-MM-dd"));
		} catch (Exception e) {
		}

		return date;
	}

	/**
	 * 根据Timestamp类型返回2014-06-06格式String
	 *  Created on 2014-6-6 
	 * @param time
	 * @return String
	 */
	public static String parseTimestampFormat(Timestamp time) {

		if (time != null && !time.equals("")) {

			return parseDateFormat(new Date(time.getTime()));

		} else {

			return "";
		}

	}

	/**
	 * 根据Date转换String格式yyyy-MM-dd
	 *  Created on 2014-6-6 
	 * @param date
	 * @return String
	 */
	public static String parseDateFormat(Date date) {
		SimpleDateFormat fo = new SimpleDateFormat();
		fo.applyPattern("yyyy-MM-dd");
		String retVal = "0000-00-00";
		try {
			retVal = DateFormatUtils.format(date, "yyyy-MM-dd");
		} catch (Exception e) {
		}

		return retVal;
	}

	/**
	 * 根据String返回Timestamp
	 *  Created on 2014-6-6 
	 * @param value
	 * @return Timestamp
	 */
	public static Timestamp formatFromYYYYMMDD(String value) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = sdf.parse(value);
		} catch (ParseException e) {
			return null;
		}
		return new Timestamp(date.getTime());
	}
	
	public static Timestamp formatFromYYYYMMDDhhmmss(String value) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = sdf.parse(value);
		} catch (ParseException e) {
			return null;
		}
		return new Timestamp(date.getTime());
	}

	public static Date string2Date(String str) {
		if (StringUtils.isEmpty(str))
			return new Date();
		return java.sql.Date.valueOf(str);
	}

	public static boolean between(Date srcDate, Date startDate, Date endDate) {
		if (startDate.after(srcDate))
			return false;
		if (endDate.before(srcDate))
			return false;
		return true;
	}

	public static Date getDayStart(Date date) {
		return string2Date(divideDateForDay(date, "yyyy-MM-dd", 0));
		// return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 00:00:00");
	}
	
	/**
	 * 根据传入时间在追加一天
	 *  Created on 2014-6-6 
	 * @param date
	 * @return
	 */
	public static Date getDayEnd(Date date) {
		return string2Date(divideDateForDay(date, "yyyy-MM-dd", 1));
		// return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 23:59:59");
	}

	/**
	 * 给指定时间 追加天数
	 *  Created on 2014-6-6 
	 * @param date  
	 * @param pattern   显示格式
	 * @param num       需要加的天数
	 * @return
	 */
	public static String divideDateForDay(Date date, String pattern, int num) {
		if (date == null)
			date = new Date(System.currentTimeMillis());
		if (pattern == null)
			pattern = "yyyy-MM-dd HH:mm";
		Calendar cal = null;
		SimpleDateFormat fo = new SimpleDateFormat();
		fo.applyPattern(pattern);
		try {
			fo.format(date);
			cal = fo.getCalendar();
			cal.add(Calendar.DATE, num);
		} catch (Exception e) {
		}
		return fo.format(cal.getTime());
	}

	/**
	 * 算出两个时间的相差天数
	 *  Created on 2014-6-6 
	 * @param dateBegin
	 * @param dateEnd
	 * @return
	 */
	public static int subtrationDate(Date dateBegin, Date dateEnd) {

		GregorianCalendar gc1 = new GregorianCalendar(dateBegin.getYear(),
				dateBegin.getMonth(), dateBegin.getDate());
		GregorianCalendar gc2 = new GregorianCalendar(dateEnd.getYear(),
				dateEnd.getMonth(), dateEnd.getDate());
		// the above two dates are one second apart
		Date d1 = gc1.getTime();
		Date d2 = gc2.getTime();
		long l1 = d1.getTime();
		long l2 = d2.getTime();
		long difference = l2 - l1;
		int date = (int) (difference / 24 / 60 / 60 / 1000);
		return date;

	}

	// 当前日期前几天或者后几天的日期
	public static Date afterNDay(int n) {
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
		c.add(Calendar.DATE, n);
		Date d2 = c.getTime();
		return d2;
	}

	// 当前日期前几天或者后几天的日期
	public static Date afterNDays(Timestamp time, int n) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(time.getTime());
		c.add(Calendar.DATE, n);
		Date d2 = c.getTime();
		return d2;
	}

	public static Timestamp transDate(Date date) {
		if (date != null) {
			long time = date.getTime();
			return new Timestamp(time);
		}
		return null;
	}

	public static Date transTimestamp(Timestamp time) {
		if (time != null) {
			long t = time.getTime();
			return new Date(t);
		}
		return null;
	}

	// 时间段的第一个时间
	public static java.sql.Timestamp stringToTime1(String d) {
		java.sql.Timestamp t = null;
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

		Date d1;
		try {
			if (StringUtils.isNotEmpty(d)) {
				d1 = df.parse(d);
				t = new Timestamp(d1.getTime());
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return t;
	}

	// 时间段的第二个时间
	public static java.sql.Timestamp stringToTime2(String d) {
		java.sql.Timestamp t = null;
		if (StringUtils.isNotEmpty(d)) {
			t = Timestamp.valueOf(d + " 23:59:59");
		}
		return t;
	}

	public static Calendar getYesterDayBegin() {
		Calendar before = Calendar.getInstance();

		before
				.set(Calendar.DAY_OF_MONTH,
						before.get(Calendar.DAY_OF_MONTH) - 1);
		before.set(Calendar.HOUR_OF_DAY, 0);
		before.set(Calendar.MINUTE, 0);
		before.set(Calendar.SECOND, 0);
		before.set(Calendar.MILLISECOND, 0);

		return before;
	}

	/**
	 * 查看昨天的日期  还需要调用transCalendarToTimestamp方法
	 *  Created on 2014-6-6 
	 * @return
	 */
	public static Calendar getYesterDayEnd() {
		Calendar after = Calendar.getInstance();
		after.set(Calendar.DAY_OF_MONTH, after.get(Calendar.DAY_OF_MONTH) - 1);
		after.set(Calendar.HOUR_OF_DAY, 23);
		after.set(Calendar.MINUTE, 59);
		after.set(Calendar.SECOND, 59);
		after.set(Calendar.MILLISECOND, 999);
		return after;
	}
	
	/**
	 * Calendar和Timestamp转换
	 * @param cal
	 * @return
	 */
	public static Timestamp transCalendarToTimestamp(Calendar cal)
	{
		Timestamp ts = new Timestamp(cal.getTimeInMillis());
		return ts;
	}

	/**
	 * 根据Timestamp类型参数  返回年后两位月日(例如:140606)
	 *  Created on 2014-6-6 
	 * @param time
	 * @return String
	 */
	public static String transTimestamptostr(Timestamp time) {
		if (time != null) {

			java.util.Calendar c = Calendar.getInstance();
			c.setTime(time);
			String year = String.valueOf(c.get(c.YEAR));
			String month = String.valueOf(c.get(c.MONTH) + 1);
			String day = String.valueOf(c.get(c.DATE));

			if (month.length() < 2)
				month = "0" + month;
			if (day.length() < 2)
				day = "0" + day;
			return year.substring(2, 4) + month + day;

		}
		return null;
	}
	
	/**
	 * 根据Calendar日历返回String
	 *  Created on 2014-6-6 
	 * @param cal
	 * @return
	 */
	public static String getDataString(Calendar cal)
	{
		Calendar now=cal;
		String time=now.get(Calendar.YEAR)+"-"+(now.get(Calendar.MONTH)+1)+"-"+now.get(Calendar.DAY_OF_MONTH)+" "+now.get(Calendar.HOUR_OF_DAY)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND);
		return time;
	}
	
	
	public static Calendar parseCalendarDate(String date) {
		Calendar d11 = new GregorianCalendar();
		Date d1 = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");// 时间格式自己设置
		try { // 一定要放到try里面,不然会报错的
			d1 = sdf.parse(date);
		} catch (Exception e) {
		}

		d11.setTime(d1); // OK了,d11就是结果了
		return d11;
	}
	
	public static Timestamp calendar2Timestamp(Calendar cal){
		return new Timestamp(cal.getTimeInMillis());
	}
	
	public static String getDatePath(){
		return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMdd");
	}
	public static String getDatePath(Calendar cal,String pattern){
		if(pattern==null){
			pattern="yyyy-MM-dd hh:mm:ss";
		}
		SimpleDateFormat sf=new SimpleDateFormat(pattern);
		return sf.format(cal.getTime());
	}
	public static String getDateTimePath(){
		return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMddHHmmss");
	}
	
	//Date转化为Calendar
	public static Calendar date2Calendar(Date d){	
		Calendar cal=Calendar.getInstance();
		cal.setTime(d);
		return cal;
	}
	
	/**
	 * 日期比较是否相等
	 * @param d1
	 * @param d2
	 * @param type 比较方式,complete,date,
	 * @return boolean
	 * @author zhou jun
	 */
	public static boolean compere(Date d1, Date d2, String type)
	{
		if(type.equals("date")){
			String pattern = "yyyy-MM-dd";
			String date1 = formatDate(d1, pattern);
			String date2 = formatDate(d2, pattern);
			//System.out.println(date1+date2);
			if(date1.equals(date2)){
				return true;
			}
			return false;
		}
		else
		{
			return d1.equals(d2);
		}
	}
	
	/** 
     * 功能: 将日期对象按照某种格式进行转换,返回转换后的字符串 
     *  
     * @param date 日期对象 
     * @param pattern 转换格式 例:yyyy-MM-dd
     * @author yanhechao 
     */  
    public static String DateToString(Date date, String pattern) {  
        String strDateTime = null;  
        SimpleDateFormat formater = new SimpleDateFormat(pattern);  
        strDateTime = date == null ? null : formater.format(date);  
        return strDateTime;  
    }  
}

分享到:
评论

相关推荐

    2024华为OD机试D卷 - 最多购买宝石数目 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    华为OD机试D卷 - 小朋友来自多少小区 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    C51单片机的示例-课程实验-LCD1602基础开发库-内含源码和说明书.zip

    C51单片机的示例-课程实验-LCD1602基础开发库-内含源码和说明书.zip

    毕业设计 基于Python+Django+itemCF和userCF算法音乐推荐系统源码+详细文档+全部数据资料 高分项目

    【资源说明】 毕业设计 基于Python+Django+itemCF和userCF算法音乐推荐系统源码+详细文档+全部数据资料 高分项目 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    setuptools-51.3.1-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于python实现通过摄像头进行手势识别并进行控制vrep仿真机械臂+源码+文档(高分优秀项目)

    基于python实现通过摄像头进行手势识别并进行控制vrep仿真机械臂+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 通过摄像头进行手势识别,控制vrep仿真机械臂 anaconda 环境部署: conda create -n py37 python=3.7 pip install opencv-python conda install tensorflow==1.13.1 conda install keras==2.2.4 conda install matplotlib pip install imutils 程序介绍: label.py 采集,制作标签数据集 model.py 定义模型 train.py 模型训练 test.py 测试手势识别结果 main.py 控制机械臂主程序 vrep.py, vrepConst.py, remoteApi.so : vrep 为 windows 提供的官方接口 puma560.ttt vrep机械臂

    setuptools-42.0.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-1.3.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    毕业设计 基于Python+Flask的知识图谱的推荐系统,音乐领域知识图谱3MKG源码+详细文档+全部数据资料 高分项目

    【资源说明】 毕业设计 基于Python+Flask的知识图谱的推荐系统,音乐领域知识图谱3MKG源码+详细文档+全部数据资料 高分项目 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    Python环形数组.docx

    环形数组

    Jira敏捷开发.pdf

    Jira敏捷开发.pdf

    十六进制转浮点数.vi

    十六进制转浮点数.vi

    华为OD机试D卷 - 掌握的单词个数 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    setuptools-32.2.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    MP4拖入压制,支持多文件拖入,可压缩至原体积的5%-20%基本无损

    MP4拖入压制,支持多文件拖入,可压缩至原体积的5%-20%基本无损,采用GCC编译,可略微增加压缩速度

    setuptools-3.6.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    2024华为OD机试D卷 - 最大矩阵和 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    setuptools-50.2.0-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    华为OD机试D卷 - 手机App防沉迷系统 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    卡通海洋0.0.5 凑11

    1,uv偏移 2,海岸线 3,海面透明度设置 4,海岸线噪音纹理(变体Shader) 5,海浪形变

Global site tag (gtag.js) - Google Analytics