`
wesker0918
  • 浏览: 42117 次
  • 性别: Icon_minigender_1
  • 来自: 山东->北京
社区版块
存档分类
最新评论

日期操作函数

阅读更多
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.log4j.Logger;

public class DateDeal {
	private static final Logger logger = Logger.getLogger("ejb");
	protected static DateFormat formatter1 = new SimpleDateFormat("yyyyMMddHHmmss");
	protected static DateFormat formatter2 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
	protected static DateFormat formatter3 = new SimpleDateFormat("yyyy年MM月dd日");
	protected static DateFormat formatter4 = new SimpleDateFormat("yyyyMMdd");

	public DateDeal() {}

	/**
	* 计算日期相隔的天数(按照每月30天计算)
	* @param startDate 开始日期
	* @param endDate   结束日期
	* @return  int 天数
	*/
	public static int getDays(String startDate, String endDate) {
		int date = 0;
		int sYear = Integer.parseInt(startDate.substring(0, 4));
		int sMonth = Integer.parseInt(startDate.substring(4, 6));
		int sDate = Integer.parseInt(startDate.substring(6, 8));
		int eYear = Integer.parseInt(endDate.substring(0, 4));
		int eMonth = Integer.parseInt(endDate.substring(4, 6));
		int eDate = Integer.parseInt(endDate.substring(6, 8));

		if ( (sMonth == eMonth) && (sYear == eYear)) {
			date = eDate - sDate;
		}else {
      		if (sDate == 31) {
        		sDate = 30;
      		}
      		
      		if (eDate == 31) {
        		eDate = 30;
      		}
      		
      		if (sMonth == 2 && sDate >= 28) {
        		sDate = 30;
      		}
      		
      		if (eMonth == 2 && eDate >= 28) {
        		eDate = 30;
      		}
      		date = (eYear - sYear) * 360 + (eMonth - sMonth) * 30 + (eDate - sDate);
    	}
    	return date;
  }

	/**
	* 计算日期相隔的天数(实际)
	* @param startDate 开始日期
	* @param endDate   结束日期
	* @return  int 天数
	*/
  	public static long getRealDays(String startDate, String endDate) {
    	Date sDate = null;
    	Date eDate = null;
    	try {
	      	sDate = formatter4.parse(startDate);
    	  	eDate = formatter4.parse(endDate);
    	}catch (ParseException e) {
      		e.printStackTrace();
    	}
    	long beginTime = sDate.getTime();
    	long endTime = eDate.getTime();
    	long betweenDays = (long) ( (endTime - beginTime) / (1000 * 60 * 60 * 24) + 0.5);
    	return betweenDays;
  	}

	/**
	* 字符串转化成日期-(yyyyMMddHHmmss)
	* @param dateString
	* @return
	* @throws ParseException
	*/
	public static Date stringToDate(String dateString) throws ParseException {
    	return formatter1.parse(dateString);
  	}

	/**
	* 日期转化成字符串-(yyyyMMddHHmmss)
	* @param date
	* @return
	* @throws ParseException
	*/
	public static String dateToString(Date date) throws ParseException {
    	return formatter1.format(date);
  	}

	/**
	* 日期转换成中文字符串(yyyy年MM月dd日)
	* @param date
	* @return
	* @throws ParseException
	*/
  	public static String dateToShortChinese(Date date) throws ParseException {
    	return formatter3.format(date);
  	}

	/**
	* 日期字符串转换成中文("yyyy年MM月dd日HH:mm:ss")
	* @param dataString
	* @return
	* @throws ParseException
	*/
	public static String dateStringToChinese(String dataString) throws ParseException {
    	return formatter2.format(stringToDate(dataString));
  	}

	/**
	* 日期字符串转换成中文("yyyy年MM月dd日")
	* @param dataString
	* @return
	* @throws ParseException
	*/
  	public static String dateStringToShortChinese(String dataString) throws ParseException {
    	return formatter3.format(stringToDate(dataString));
  	}

	public static String trans() {
		String dtmp = null;
		String mtmp = null;
	
		Calendar calendarSys = new GregorianCalendar();
		//取当前时间
		Date d = new Date(System.currentTimeMillis());
		calendarSys.setTime(d);
		//转换后,取年,月,日
		Integer year = new Integer(calendarSys.get(Calendar.YEAR));
		Integer month = new Integer(calendarSys.get(Calendar.MONTH) + 1);
		Integer date = new Integer(calendarSys.get(Calendar.DATE));
		
		if (date.intValue() < 10) {
			dtmp = "0" + date.toString();
		}else {
			dtmp = date.toString();
		}
	
		if (month.intValue() < 10) {
			mtmp = "0" + month.toString();
		}else {
			mtmp = month.toString();
		}
		
		//转化为字符串
		String ds = new String(year.toString() + mtmp + dtmp);
		return ds;
	}

	/* *
	得到当前的时间:时 分 秒
	*/
	public static String transHMS() {
		String dtmp = null;
		String mtmp = null;
		String stmp = null;
	
		Calendar calendarSys = new GregorianCalendar();
		//取当前时间
		Date d = new Date(System.currentTimeMillis());
		calendarSys.setTime(d);
		//转换后,取年,月,日
		Integer hour = new Integer(calendarSys.get(Calendar.HOUR_OF_DAY));
		Integer minute = new Integer(calendarSys.get(Calendar.MINUTE));
		Integer second = new Integer(calendarSys.get(Calendar.SECOND));
		if(hour.intValue()<10){
			dtmp="0"+hour.toString();
		}else{
			dtmp=hour.toString();
		}
	
		if(minute.intValue()<10){
			mtmp="0"+minute.toString();
		}else{
			mtmp=minute.toString();
		}
	
		if(second.intValue()<10){
			stmp="0"+second.toString();
		}else{
			stmp=second.toString();
		}
	
		//转化为字符串
		String ds = new String(dtmp+mtmp+ stmp);
		logger.debug("当前时间:<<<" + ds + ">>>");
		return ds;
	}


	 /*
	 *依据日期(20050808)获得该日期是本月的第几周
	 */
	public static Integer weekOfMonth(String txdate) throws ParseException {
		Date date=null;
		Integer weekOfMonth=null;
		Calendar calendarSys=new GregorianCalendar();
		calendarSys.setFirstDayOfWeek(Calendar.SUNDAY);
	
		//转换日期
		date=formatter4.parse(txdate);
		calendarSys.setTime(date);
	
		weekOfMonth=new Integer(calendarSys.get(Calendar.WEEK_OF_MONTH));

		return weekOfMonth;
	}

	/**
	*依据年月(200508)和本月第几(2)周获得该周在本月的起始日期(20050807-20050813)
	*/
	public static String startEndDate(String yearMonth, Integer weekOfMonth) throws ParseException {
		String firstDateOfMonth=null;
		String startdate=null;
		String enddate=null;
		String startEndDate=null;
		Date date01=null;
	
		Calendar calendarSys=new GregorianCalendar();
		calendarSys.setFirstDayOfWeek(Calendar.SUNDAY);
		//转换日期
		String txdate01=yearMonth+"01"; //某年月1日(20050801)
		date01=formatter4.parse(txdate01);
		calendarSys.setTime(date01);
	
		//依据某年月1日(20050801)获得是星期几(星期1)
		Integer dayOfWeek=new Integer(calendarSys.get(Calendar.DAY_OF_WEEK)-1);
		logger.debug("dayOfWeek:"+dayOfWeek) ;
	
		//获得本月的第一周的起始日期
		calendarSys.add(Calendar.DATE,-dayOfWeek.intValue());
		logger.debug("获得本月的第一周的起始日期:"+formatter4.format(calendarSys.getTime()));
	
		//获得起始日
		calendarSys.add(Calendar.DATE,(weekOfMonth.intValue()-1)*7);
		startdate=formatter4.format(calendarSys.getTime()) ;
		logger.debug("获得起始日:"+startdate);
	
		//获得终止日
		calendarSys.add(Calendar.DATE,6);
		enddate=formatter4.format(calendarSys.getTime());
		logger.debug("获得终止日:"+enddate);
		
		startEndDate=startdate+"-"+enddate;
		return startEndDate;
	}

	/*
	*依据年月日(20050808)加上x年 或 x月 或x日,返回加上x年 或 x月 或x日 后的日期(20050907)
	*param txdate String 交易日期
	*param type String 类型 1-年,2-月,3-日
	*param yearMonthDay Integer x年 或 x月 或x日
	*/
	public static String add(String txdate, String type, Integer yearMonthDay) throws ParseException {
		String resultDate=null;
		
		Calendar calendarSys=new GregorianCalendar();
		calendarSys.setFirstDayOfWeek(Calendar.SUNDAY);
		
		//转换日期
		Date date=formatter4.parse(txdate);
		calendarSys.setTime(date);
		
		//获得起始日
		if(type.trim().equals("1")){
			calendarSys.add(Calendar.YEAR,yearMonthDay.intValue());
		}else if(type.trim().equals("2")){
			calendarSys.add(Calendar.MONTH,yearMonthDay.intValue());
		}else{
			calendarSys.add(Calendar.DATE,yearMonthDay.intValue());
		}
	
		resultDate=formatter4.format(calendarSys.getTime()) ;
		logger.debug("日期:"+resultDate);
	
		return resultDate;
	}

	/**
	* 取得传入的日期的前一天的日期
	* @param curDay String
	* @return String
	*/
	public static String getYDay(String txDate) throws Exception{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		long timeT = sdf.parse(txDate).getTime();
		return sdf.format(new Date(timeT - 24 * 60 * 60 * 1000));
	}
}

 

分享到:
评论

相关推荐

    基于java网上球鞋竞拍系统设计与实现.docx

    基于java网上球鞋竞拍系统设计与实现.docx

    基于bert实现关系三元组抽取python源码+数据集+项目说明.zip

    基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。

    基于java的足球赛会管理系统设计与实现.docx

    基于java的足球赛会管理系统设计与实现.docx

    基于java的婚纱摄影网的设计与实现.docx

    基于java的婚纱摄影网的设计与实现.docx

    基于安卓的美颜相机,可以通过opencv加滤镜,并调整亮度和对比度,可以磨皮,但并不能瘦脸,磨皮时非常卡顿,暂无解决方法.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于java的农产品仓库管理系统系统设计与实现.docx

    基于java的农产品仓库管理系统系统设计与实现.docx

    基于Java swing +mysql(Oracle)实现的飞机订票系统项目(含毕业论文+答辩 ppt+双数据库版本源码+图)

    【作品名称】:基于Java swing +mysql(Oracle)实现的飞机订票系统项目(含毕业论文+答辩 ppt+双数据库版本源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 系统功能需求 本系统用于远程机票预订,包括远程航班信息查询、机票预订与确认等;主要分为四大功能:查询、订票、退票和管理。 管理员登录、注销 到系统并进行插入、删除、更新以及查看机票后台数据库操作 插入:机票的插入可以按照航班号、班期、公司、座位号、起飞地以及抵达地等等插入数据库。 删除:机票可以按照航班号、起止城市、星期进行删除 3.1.1客户端系统功能 1.普通用户: 查询:根据航班号、航空公司以及目的地查询出票类信息 订票: 根据出发日期和第一航班号预订机票,机票类型分为单 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。

    2018信基广场“红动佛山”春节新媒体营销方案.pptx

    2018信基广场“红动佛山”春节新媒体营销方案.pptx

    #_ssm_100_mysql_基于智慧医疗预约挂号管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    基于java的蜀都天香酒楼的网站设计与实现.docx

    基于java的蜀都天香酒楼的网站设计与实现.docx

    java基于ssm+vue 医院疫情防控管理系统源码 带毕业论文+ppt+sql

    1、开发环境:SSM框架;内含Mysql数据库;VUE技术;内含说明文档 2、项目代码都经过严格调试,代码没有任何bug! 3、该资源包括项目的全部源码,下载可以直接使用! 4、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 5、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。

    基于java的英语单词学习网站设计与实现.docx

    基于java的英语单词学习网站设计与实现.docx

    基于java企业销售人员培训系统设计与实现.docx

    基于java企业销售人员培训系统设计与实现.docx

    2019优益C x 易烊千玺微博营销案结案报告.pptx

    2019优益C x 易烊千玺微博营销案结案报告.pptx

    基于java的单位人事管理系统设计与实现.docx

    基于java的单位人事管理系统设计与实现.docx

    java-ssm+vue图书管理系统实现源码(项目源码-说明文档)

    该网站采用SSM框架和Eclipse编辑器、MySQL数据库设计并实现的。网站功能包含系统用户管理、图书管理、用户管理、借书管理、续借管理、违章缴款管理等模块。 首页是网站的入口,主要包含了:新闻信息、图书信息等导航功能。 用户有独立的注册界面,用户填写好注册信息后,会有个一审核的过程,经过管理员审核注册成功,并将注册的信息加入用户表中。 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    我的网页设计部署.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    信息系统项目管理师考试集锦.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    【单变量输入多步预测】基于TCN-GRU-Attention的风电功率预测研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    docker安装部署gorse

    docker安装部署gorse

Global site tag (gtag.js) - Google Analytics