`

封装了DateUtil方法

    博客分类:
  • java
阅读更多

封装了DateUtil方法

/**
 * all rights reserved by zhanqiong, 2005
 */
package com.koubei.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @author chen
 * 
 */
public class DateUtil {
	
	/**
	 * 日
	 */
	public final static int INTERVAL_DAY = 1;
	/**
	 * 周
	 */
	public final static int INTERVAL_WEEK = 2;
	/**
	 * 月
	 */
	public final static int INTERVAL_MONTH = 3;
	/**
	 * 年
	 */
	public final static int INTERVAL_YEAR = 4;
	/**
	 * 小时
	 */
	public final static int INTERVAL_HOUR = 5;
	/**
	 * 分钟
	 */
	public final static int INTERVAL_MINUTE = 6;
	/**
	 * 秒
	 */
	public final static int INTERVAL_SECOND = 7;	
	
	/**
	 * date = 1901-01-01
	 */
	public final static Date tempDate=new Date(new Long("-2177481952000"));;

	/**
	 * 测试是否是当天
	 * 
	 * @param date - 某一日期
	 * @return true-今天, false-不是
	 */
	@SuppressWarnings("deprecation")
	public static boolean isToday(Date date) {
		Date now = new Date();
		boolean result = true;
		result &= date.getYear()==now.getYear();
		result &= date.getMonth()==now.getMonth();
		result &= date.getDate()==now.getDate();
		return result;
	}

	/**
	 * 两个日期相减,取天数
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static long DaysBetween(Date date1, Date date2) {
		if (date2 == null)
			date2 = new Date();
		long day = (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);
		return day;
	}

	/**
	 * 比较两个日期 if date1<=date2 return true
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean compareDate(String date1, String date2) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date d1 = format.parse(date1);
			Date d2 = format.parse(date2);
			return !d1.after(d2);
		} catch (ParseException e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * 字符型转换成日期型
	 * 
	 * @param date
	 * @param dateFormat
	 * @return
	 */
	public static Date dateFormat(String date, String dateFormat) {
		if (date == null)
			return null;
		SimpleDateFormat format = new SimpleDateFormat(dateFormat);
		if (date != null) {
			try {
				return format.parse(date);
			} catch (Exception ex) {
			}
		}
		return null;
	}

    
	/**
	 * 使用默认格式 yyyy-MM-dd HH:mm:ss
	 * @author Robin Chang
	 * @param date
	 * @return
	 */
	public static Date dateFormat(String date)
	{
		return dateFormat(date,"yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 日期型转换成字符串
	 * 
	 * @param date
	 * @param dateFormat
	 * @return
	 */
	public static String dateFormat(Date date, String dateFormat) {
		if (date == null)
			return "";
		SimpleDateFormat format = new SimpleDateFormat(dateFormat);
		if (date != null) {
			return format.format(date);
		}
		return "";
	}
	
	/**
     * 由于生日增加保密属性,现决定1900为保密对应值,如果遇到1900的年份,则隐掉年份
     * 
     * @param date
     * @param dateFormat
     * @return 不保密显示1981-12-01保密则显示`12-01
     */
    public static String birthdayFormat(Date date) {
        if (date == null)
            return "";
        SimpleDateFormat format = null;
        if(date.before(tempDate)) {
            format = new SimpleDateFormat("MM-dd");
        }else {
            format = new SimpleDateFormat("yyyy-MM-dd");       
        }
        if (date != null) {
            return format.format(date);
        }
        return "";
    }
    
	/**
	 * 使用默认格式 yyyy-MM-dd HH:mm:ss
	 * @param date
	 * @return
	 */
	public static String dateFormat(Date date)
	{
		return dateFormat(date,"yyyy-MM-dd HH:mm:ss");
	}
	

	public static boolean isExpiredDay(Date date1) {
		long day = (new Date().getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);
		if (day >= 1)
			return true;
		else
			return false;
	}

	public static Date getYesterday() {
		Date date = new Date();
		long time = (date.getTime() / 1000) - 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse(format.format(date));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return date;
	}

	public static Date getWeekAgo() {
		Date date = new Date();
		long time = (date.getTime() / 1000) - 7 * 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse(format.format(date));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return date;
	}

	public static String getDaysAgo(int interval) {
		Date date = new Date();
		long time = (date.getTime() / 1000) - interval * 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			return format.format(date);
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return "";
	}

	public static Date getTomorrow() {
		Date date = new Date();
		long time = (date.getTime() / 1000) + 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse(format.format(date));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return date;
	}

	

	public static Date getBeforeDate(String range) {
		Calendar today = Calendar.getInstance();
		if ("week".equalsIgnoreCase(range))
			today.add(Calendar.WEEK_OF_MONTH, -1);
		else if ("month".equalsIgnoreCase(range))
			today.add(Calendar.MONTH, -1);
		else
			today.clear();
		return today.getTime();
	}

	public static Date getThisWeekStartTime() {
		Calendar today = Calendar.getInstance();
		today.set(Calendar.DAY_OF_WEEK, today.getFirstDayOfWeek());
		Calendar weekFirstDay = Calendar.getInstance();
		weekFirstDay.clear();
		weekFirstDay.set(Calendar.YEAR, today.get(Calendar.YEAR));
		weekFirstDay.set(Calendar.MONTH, today.get(Calendar.MONTH));
		weekFirstDay.set(Calendar.DATE, today.get(Calendar.DATE));
		return weekFirstDay.getTime();
	}

	public static String getToday(String format) {
		String result = "";
		try {
			Date today = new Date();
			SimpleDateFormat simpleFormat = new SimpleDateFormat(format);
			result = simpleFormat.format(today);
		} catch (Exception e) {
		}
		return result;
	}

	public static Date getStartDay(int year, int month) {
		Calendar today = Calendar.getInstance();
		today.clear();
		today.set(Calendar.YEAR, year);
		today.set(Calendar.MONTH, month - 1);
		today.set(Calendar.DAY_OF_MONTH, 1);
		return today.getTime();
	}

	public static List<Integer> getBeforeYearList(int before) {
		Calendar today = Calendar.getInstance();
		int theYear = today.get(Calendar.YEAR);
		List<Integer> list = new ArrayList<Integer>();
		for (int i = before; i >= 0; i--)
			list.add(theYear - i);

		return list;
	}
	
	/**
	 * 增加时间
	 * @param interval [INTERVAL_DAY,INTERVAL_WEEK,INTERVAL_MONTH,INTERVAL_YEAR,INTERVAL_HOUR,INTERVAL_MINUTE]
	 * @param date
	 * @param n 可以为负数
	 * @return
	 */
	public static Date dateAdd(int interval,Date date,int n)
	{
		long time = (date.getTime() / 1000); //单位秒
		switch(interval)
		{
			case INTERVAL_DAY:
				time = time + n * 86400;//60 * 60 * 24;
				break;
			case INTERVAL_WEEK:
				time = time + n * 604800;//60 * 60 * 24 * 7;
				break;
			case INTERVAL_MONTH:
				time = time + n * 2678400;//60 * 60 * 24 * 31;
				break;
			case INTERVAL_YEAR:
				time = time + n * 31536000;//60 * 60 * 24 * 365;
				break;
			case INTERVAL_HOUR:
				time = time + n * 3600;//60 * 60 ;
				break;
			case INTERVAL_MINUTE:
				time = time + n * 60;
				break;
			case INTERVAL_SECOND:
				time = time + n;
				break;
			default:
		}
		
		Date result = new Date();
		result.setTime(time * 1000);
		return result;
	}
	
	/**
	 * 计算两个时间间隔
	 * @param interval [INTERVAL_DAY,INTERVAL_WEEK,INTERVAL_MONTH,INTERVAL_YEAR,INTERVAL_HOUR,INTERVAL_MINUTE]
	 * @param begin
	 * @param end
	 * @return
	 */
	public static int dateDiff(int interval,Date begin,Date end)
	{
		long beginTime = (begin.getTime() / 1000); //单位:秒
		long endTime = (end.getTime() / 1000); //单位: 秒
		long tmp = 0;
		if (endTime == beginTime)
		{
			return 0;
		}

		//确定endTime 大于 beginTime 结束时间秒数 大于 开始时间秒数
		if (endTime < beginTime)
		{
			tmp = beginTime;
			beginTime = endTime;
			endTime = tmp;
		}
		
		long intervalTime = endTime - beginTime;
		long result = 0;
		switch(interval)
		{
			case INTERVAL_DAY:
				result = intervalTime / 86400;//60 * 60 * 24;
				break;
			case INTERVAL_WEEK:
				result = intervalTime / 604800;//60 * 60 * 24 * 7;
				break;
			case INTERVAL_MONTH:
				result = intervalTime / 2678400;//60 * 60 * 24 * 31;
				break;
			case INTERVAL_YEAR:
				result = intervalTime / 31536000;//60 * 60 * 24 * 365;
				break;
			case INTERVAL_HOUR:
				result = intervalTime / 3600;//60 * 60 ;
				break;
			case INTERVAL_MINUTE:
				result = intervalTime / 60;
				break;
			case INTERVAL_SECOND:
				result = intervalTime / 1;
				break;
			default:
		}		
		
		//做过交换
		if (tmp > 0)
		{
			result = 0 - result;
		}
		return (int) result;
	}	
	
	/**
	 * 当前年份
	 * @return
	 */
	public static int getTodayYear()
	{
		int yyyy = Integer.parseInt(dateFormat(new Date(),"yyyy"));
		return yyyy;
	}
		
	public static Date getNow()
	{
		return new Date();
	}
	
	/**
	 * 把日期格式为rss格式兼容的字符串
	 * @param date
	 * @return
	 */
	public static String dateFormatRss(Date date)
	{
		if (date != null)
		{
			return dateFormat(date,"E, d MMM yyyy H:mm:ss") + " GMT";
		}
		return "";
	}
	
	/**
	 * 判断当前日期是否在两个日期之间
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @return 
	 */
	public static boolean betweenStartDateAndEndDate(Date startDate,Date endDate){
		boolean bool=false;
		Date curDate=new Date();
		if (curDate.after(startDate) && curDate.before(DateUtil.dateAdd( INTERVAL_DAY ,endDate,1)) ){
			bool=true;
		}
		return bool;
		
	}
	
	/**
	 * 判断当前时间是否在在两个时间之间
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @return 
	 */
	public static boolean nowDateBetweenStartDateAndEndDate(Date startDate,Date endDate){
		boolean bool=false;
		Date curDate=new Date();
		if (curDate.after(startDate) && curDate.before(endDate)){
			bool=true;
		}
		return bool;
	}
	
	/**
	 * 判断当前时间是否在date之后
	 * @param date
	 * @return 
	 */
	public static boolean nowDateAfterDate(Date date){
		boolean bool=false;
		Date curDate=new Date();
		if (curDate.after(date)){
			bool=true;
		}
		return bool;
	}
	
	
	/**
	 * 判断二个日期相隔的天数,结束时间为null时,,取当前时间
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @return 
	 */
	public static int getBetweenTodaysStartDateAndEndDate(Date startDate,Date endDate){
		int betweentoday = 0;
		if(startDate==null){
			return betweentoday;
		}
		if(endDate==null){
			Calendar calendar = Calendar.getInstance();
			String year = new Integer(calendar.get(Calendar.YEAR)).toString();
			String month = new Integer((calendar.get(calendar.MONTH)+1)).toString();
			String day =  new Integer(calendar.get(calendar.DAY_OF_MONTH)).toString();
			String strtodaytime = year+"-"+month+"-"+day;
			DateFormat  formatter=new SimpleDateFormat("yyyy-MM-dd");   
			try {
				endDate = formatter.parse(strtodaytime);
			} catch (ParseException e) {
				//TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		if(endDate.after(startDate)){
			betweentoday =  (int)((endDate.getTime() -startDate.getTime())/86400000);
		}else{
			betweentoday =  (int)((startDate.getTime() -endDate.getTime())/86400000);
		}
		return betweentoday;
	}
     /**   
	    *   取得指定长度日期时间字符串{不含格式}   
	        @param   format   时间格式由常量决定   
	        8:  YYMMDDHH            8位   
		    10: YYMMDDHHmm          10位   
			12: YYMMDDHHmmss        12位   
			14: YYYYMMDDHHmmss      14位   
			15: YYMMDDHHmmssxxx     15位   (最后的xxx   是毫秒) 

	    */ 
	public   static  String  getTime(int  format){   
        StringBuffer   cTime=new   StringBuffer(10);   
        Calendar   time=Calendar.getInstance();   
        int   miltime=time.get(Calendar.MILLISECOND);   
        int   second=time.get(Calendar.SECOND);   
        int   minute=time.get(Calendar.MINUTE);   
        int   hour=time.get(Calendar.HOUR_OF_DAY);   
        int   day   =time.get(Calendar.DAY_OF_MONTH);   
        int   month=time.get(Calendar.MONTH)+1;   
        int   year   =time.get(Calendar.YEAR);   
        if(format!=14){   
                if(year>=2000)   year=year-2000;   
                else   year=year-1900;   
        }   
        if(format>=2){   
                if(format==14)   cTime.append(year);   
                else         cTime.append(getFormatTime(year,2));   
        }   
        if(format>=4)   
                cTime.append(getFormatTime(month,2));   
        if(format>=6)   
                cTime.append(getFormatTime(day,2));   
        if(format>=8)   
                cTime.append(getFormatTime(hour,2));   
        if(format>=10)   
                cTime.append(getFormatTime(minute,2));   
        if(format>=12)   
                cTime.append(getFormatTime(second,2));   
        if(format>=15)   
                cTime.append(getFormatTime(miltime,3));   
        return   cTime.toString();   
	}   
	  /**   
	    * 产生任意位的字符串   
	    *   @param   time   要转换格式的时间   
	    *   @param   format 转换的格式   
	    *   @return String   转换的时间   
	    */ 
	private  static  String  getFormatTime(int  time,int   format){   
          StringBuffer   numm=new   StringBuffer();   
          int   length=String.valueOf(time).length(); 
          if(format<length)   return   null;
          for(int   i=0   ;i<format-length   ;i++){   
                  numm.append("0");   
          }   
          numm.append(time);   
          return   numm.toString().trim();   
   }   
	
	
	/**
	 * 根据生日去用户年龄
	 * @param birthday
	 * @return int
	 * @exception
	 * @author     豆皮
	 * @Date       Apr 24, 2008
	 */
	public static int getUserAge(Date birthday){
		 if(birthday == null) return 0;
		 Calendar cal = Calendar.getInstance();
	     if(cal.before(birthday)) {
	    	 return 0;
		 }
		 int yearNow = cal.get(Calendar.YEAR);
		 cal.setTime(birthday);// 给时间赋值
		 int yearBirth = cal.get(Calendar.YEAR);
		 return yearNow - yearBirth;
	}

    /**
     * 将int型时间(1970年至今的秒数)转换成Date型时间
     * @param unixTime 1970年至今的秒数
     * @return 
     * @author     郑卿
     */
    public static Date getDateByUnixTime(int unixTime){
        return new Date(unixTime*1000L);
    }
    
    /**
     * 将Date型时间转换成int型时间(1970年至今的秒数)
     * @param unixTime 1970年至今的秒数
     * @return 
     * @author     郑卿
     */
    public static int getUnixTimeByDate(Date date){
        return (int)(date.getTime()/1000);
    }

	
	public static void main(String[] args) {
	    Date date1 =dateFormat("1981-01-01 00:00:00");
	    Date date2 =dateFormat("1900-12-31 00:00:00");
	    System.out.println(birthdayFormat(date1));
        System.out.println(birthdayFormat(date2));
	}
	public static Date getNextDay(Date date) {
		long time = (date.getTime() / 1000) + 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse(format.format(date));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return date;

	}

	/**
	 * @param date
	 * @return
	 * 复制新Date,不改变参数
	 */
	public static Date nextDay(Date date) {
		Date newDate = (Date) date.clone();
		long time = (newDate.getTime() / 1000) + 60 * 60 * 24;
		newDate.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			newDate = format.parse(format.format(newDate));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return newDate;

	}

	@SuppressWarnings("unused")
	public static Date getNowTime() {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date();
		String dateStr = dateFormat(date);
		try {
			date = format.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	public static Date getTomorrow(Date date1) {

		// 创建当前时间对象
		Calendar now = Calendar.getInstance();
		now.setTime(date1);
		// 日期[+1]day
		now.add(Calendar.DATE, 1);
		return now.getTime();
	}

	public static Date getWeekAgo(Date date) {
		Date newDate = (Date) date.clone();
		long time = (newDate.getTime() / 1000) - 60 * 60 * 24 * 7;
		newDate.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			newDate = format.parse(format.format(newDate));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return newDate;
	}

	public static Date getDatebyTime(Date date, int n) {
		String str = DateUtil.dateFormat(date, "yyyy-MM-dd");
		String[] strs = str.split("-");
		int month = Integer.parseInt(strs[1]);
		int monthnow = (month + n) % 12;
		int year = Integer.parseInt(strs[0]) + (month + n) / 12;
		str = String.valueOf(year) + "-" + String.valueOf(monthnow) + "-"
				+ strs[2];
		return DateUtil.dateFormat(str, "yyyy-MM-dd");
	}

	/**
	 * @param date
	 * @return
	 * 复制新Date,不改变参数
	 */
	public static Date yesterday(Date date) {
		Date newDate = (Date) date.clone();
		long time = (newDate.getTime() / 1000) - 60 * 60 * 24;
		newDate.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			newDate = format.parse(format.format(newDate));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return newDate;
	}

	public static Date getYesterday(Date date) {
		long time = (date.getTime() / 1000) - 60 * 60 * 24;
		date.setTime(time * 1000);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse(format.format(date));
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return date;
	}

	private static SimpleDateFormat format = null;
	@SuppressWarnings("unused")
	public static String getStringNowTime() {
		format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date();
		String dateStr = dateFormat(date);

		return dateStr;
	}
	
	
	/**
     * 指定时间的秒数
     * 指定时间零点的秒数加指定天数的秒数
     * @param time 时间
     * @param range  天
     * @return
     */
    public static long getSpecifyTimeSec(long time,int range){
    	Date date 			= new Date((time*1000+(23-Calendar.ZONE_OFFSET)*3600000)/86400000*86400000-(23-Calendar.ZONE_OFFSET)*3600000);   
    	long zeroTime 		= date.getTime()/1000;
    	long specifyTime 	= range * 24 * 3600;
    	return (zeroTime+specifyTime);
    }
    
    /**
     * 将int型时间(1970年至今的秒数)转换成指定格式的时间
     * 
     * @param unixTime 1970年至今的秒数
     * @param dateFormat 时间格式
     * @return 
     * @author  sky
     */
    public static String formatDateByUnixTime(long unixTime, String dateFormat){
        return dateFormat(new Date(unixTime*1000), dateFormat);
    }
	
}
 
分享到:
评论

相关推荐

    2025职业教育知识竞赛题库(含答案).pptx

    2025职业教育知识竞赛题库(含答案).pptx

    "SOA海鸥算法优化下的KELM核极限学习机分类MATLAB代码详解:传感器故障诊断数据集应用与本地EXCEL数据读取功能",(SOA-KELM)海鸥算法SOA优化KELM核极限学习机分类MATLAB

    "SOA海鸥算法优化下的KELM核极限学习机分类MATLAB代码详解:传感器故障诊断数据集应用与本地EXCEL数据读取功能",(SOA-KELM)海鸥算法SOA优化KELM核极限学习机分类MATLAB代码 代码注释清楚。 main为运行主程序,可以读取本地EXCEL数据。 很方便,容易上手。 (以传感器故障诊断数据集为例) ,核心关键词:SOA-KELM;海鸥算法优化;核极限学习机分类;MATLAB代码;代码注释清楚;main程序;读取本地EXCEL数据;传感器故障诊断数据集。,SOA-KELM分类算法MATLAB代码:海鸥优化核极限学习机,轻松上手,读取EXCEL数据集进行传感器故障诊断

    人工智能领域:探索AI代理的进化与社会影响力及其应用前景

    内容概要:本文由世界经济论坛与Capgemini联合发布,主要阐述了AI代理从简单程序演变为复杂自主系统的进程,强调了它们在现代各行业如医疗保健、教育及金融服务等方面所发挥的作用,并讨论了其潜在收益以及伴随的风险和挑战。文中详细介绍了AI代理的发展历程、核心技术趋势(深度学习、强化学习)、多种类型的AI代理及其系统架构,同时对未来的发展方向——多智能体系统进行了展望,探讨了提高生产力、优化资源配置的新机会。 适合人群:对人工智能感兴趣的各界人士,尤其是关注技术创新对企业和社会长远影响的决策者和技术领导者,如商业领袖、政府官员及其他利益相关方。 使用场景及目标:①帮助政策制定者理解AI代理的功能和应用场景;②为企业管理者提供关于部署和管理AI系统的指导;③为研究者指明未来科研方向并探讨伦理和社会责任等问题;④为技术人员揭示当前最先进技术和最佳实践案例。 其他说明:文中还提到了随着更加先进的AI代理不断涌现,确保安全性和有效监管将是未来发展的重要议题之一。此外,跨行业的共识对于将AI代理顺利整合到各个部门至关重要。文章指出需要建立稳健治理机制来保障AI技术健康发展并服务于公共利益最大化的目标。

    2025网络安全理论知识考试题(含答案).pptx

    2025网络安全理论知识考试题(含答案).pptx

    基于java+ssm+mysql的在线听书网站 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 b

    基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 bootloader程序 功能简介: 本程序使用fatfs系统读取bin文件。 开机后会自动检测sd卡,检测到sd卡后,再读取固定名称的bin文件,之后会对bin文件进行首包校验,判断该升级包的起始地址是否正确,正确的话,就循环读取bin文件并写入到flash中。 完成升级。 详细流程请看流程图 ,stm32f407; SD卡升级; bootloader程序; fatfs系统读取bin文件; 检测SD卡; 首包校验; 循环写入flash。,STM32F407 SD卡升级Bootloader程序:基于SDIO FATFS系统实现自动升级功能

    2025网络与信息安全技术题库及答案.doc

    2025网络与信息安全技术题库及答案.doc

    C# WinForm通用软件开发框架源码,基于VS2019 .NET与DevExpress 21,WebApi连接SQLServer2014数据库,互联网化数据访问模式,C# 源码 WinForm?通

    C# WinForm通用软件开发框架源码,基于VS2019 .NET与DevExpress 21,WebApi连接SQLServer2014数据库,互联网化数据访问模式,C# 源码 WinForm?通用软件开发框架平台源码 基于:C#Winform+ WebApi +SQLServer2014数据库 基于:VS2019.NET? DevExpress 21.2.6控件 基于:SQLServer2014?数据库 客户端通过Http访问WebApi获得json数据的模式,本系统走互联网,只需要把WebApi发布在公网即可。 说明:此框架源码除系统管理功能外,其它无源码 ,C#源码; WinForm; WebApi; SQLServer2014; VS2019.NET; DevExpress控件; 互联网模式; 系统管理功能; 发布。,C# WinForm开发框架:基于DevExpress与WebApi的通用软件平台源码

    基于java+ssm+mysql的便民自行车管理系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    基于SqueezeNet迁移学习算法的滚动轴承故障诊断方法研究-在MATLAB r2021b环境下的应用与拓展至多元信号领域的研究,MATLAB环境下一种基于sqeezenet网络迁移学习的滚动轴承

    基于SqueezeNet迁移学习算法的滚动轴承故障诊断方法研究——在MATLAB r2021b环境下的应用与拓展至多元信号领域的研究,MATLAB环境下一种基于sqeezenet网络迁移学习的滚动轴承故障诊断方法。 算法运行环境为MATLAB r2021b,该代码展示了如何使用深度学习(迁移学习)方法对滚动轴承进行故障诊断,演示了如何将一维轴承振动信号转为二维尺度图图像并使用预训练网络应用迁移学习对轴承故障进行分类。 迁移学习显著减少了传统轴承诊断方法特征提取和特征选择所花费的时间,并在小型数据集中获得了良好的准确性。 算法可迁移至金融时间序列,地震 微震信号,机械振动信号,声发射信号,电压 电流信号,语音信号,声信号,生理信号(ECG,EEG,EMG)等信号。 ,MATLAB环境; SqueezeNet网络; 迁移学习; 滚动轴承故障诊断; 算法运行环境; 一维轴承振动信号转换; 二维尺度图图像; 特征提取和选择; 信号分析;迁移至其他类型信号 (以分号隔开),基于SqueezeNet迁移学习在MATLAB的滚动轴承故障诊断算法优化

    基于弱形式PDE建模的COMSOL不相溶两相流渗流水驱油模拟研究,comsol不相溶两相流渗流模拟,水驱油,基于弱形式PDE建模,模型已验证 ,核心关键词:comsol; 不相溶两相流; 渗流模拟

    基于弱形式PDE建模的COMSOL不相溶两相流渗流水驱油模拟研究,comsol不相溶两相流渗流模拟,水驱油,基于弱形式PDE建模,模型已验证。 ,核心关键词:comsol; 不相溶两相流; 渗流模拟; 水驱油; 弱形式PDE建模; 模型验证。,"基于弱形式PDE建模的COMSOL两相流渗流模拟:验证水驱油模型"

    Tiled for Mac v1.11.1

    Tiled for Mac是一款功能强大的开源地图编辑器,适用于macOS系统。它支持正交、等距和六边形地图类型,可创建无限大小的地图,并支持多图层编辑。用户可以通过直观的界面快速添加、修改地图元素,使用像素精度放置对象,并支持图块动画和碰撞编辑。Tiled的TMX格式易于理解,支持多种插件扩展,兼容多种游戏引擎,如RPG和平台游戏。它还提供撤销/重做功能,方便用户调整和优化地图。

    太阳能光伏MPPT控制蓄电池三阶段充电模型仿真说明文档(附扰动观测法仿真模型,R2015b版),充电控制器,太阳能光伏MPPT控制蓄电池充电模型 其中,光伏MPPT控制采用扰动观测法(P&O法),蓄

    太阳能光伏MPPT控制蓄电池三阶段充电模型仿真说明文档(附扰动观测法仿真模型,R2015b版),充电控制器,太阳能光伏MPPT控制蓄电池充电模型。 其中,光伏MPPT控制采用扰动观测法(P&O法),蓄电池充电采用三阶段充电控制。 仿真模型附加一份仿真说明文档,便于理解和修改参数。 版本: R2015b ,充电控制器; 光伏MPPT控制; 扰动观测法(P&O法); 蓄电池充电控制; 三阶段充电控制; 仿真模型; 仿真说明文档; 版本:R2015b,"R2015b版:太阳能光伏MPPT三阶段充电控制仿真模型及说明"

    基于java+ssm+mysql的蛋糕甜品店管理系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    2025医院收费员考试题题库(含答案).docx

    2025医院收费员考试题题库(含答案).docx

    "欧姆龙PLC编程新手宝典:标准程序案例集,包括CP1H脉冲编程与触摸屏实战应用",欧姆龙PLC程序欧姆龙案例欧姆龙标准程序 本产品适用于新手或者在校生 本程序包括有欧姆龙CP1H脉冲程序案例,威纶

    "欧姆龙PLC编程新手宝典:标准程序案例集,包括CP1H脉冲编程与触摸屏实战应用",欧姆龙PLC程序欧姆龙案例欧姆龙标准程序 本产品适用于新手或者在校生 本程序包括有欧姆龙CP1H脉冲程序案例,威纶通触摸屏程序,电子版讲义 程序涉及方面广,适合新手入门学习,掌握了这些以后欧姆龙脉冲程序基本通吃,编程起来无压力 本程序设计到CP1H各个轴的程序编写具体用了ACC PLS2 INI等众多指令, 每个轴的程序都是单独的,包括触摸屏在内,您可以直接调用程序套到直接的程序上,只需要把地址稍微改动即可。 本程序适用于新手、自动化专业在校生学习和提高,另外额外赠送主流的CAD电气原理图纸,包含各种主流的PLC接线原理图,各种成功案例,是每个电气工程师学习和提高最必不可少的资料 ,欧姆龙PLC程序; 欧姆龙案例; 欧姆龙标准程序; 新手学习; 在校生; CP1H脉冲程序案例; 威纶通触摸屏程序; 电子版讲义; 编程指令; 程序设计; PLC接线原理图; 成功案例。,欧姆龙PLC入门宝典:从新手到专业工程师的实用指南

    "基于Simulink的锂电池SOC估计模型研究:卡尔曼滤波算法的参数辨识与模型优化",锂电池SOC估计模型 simulink SOC估算卡尔曼滤波估算 SOC电池参数辨识模型10个; 卡尔曼滤波算法

    "基于Simulink的锂电池SOC估计模型研究:卡尔曼滤波算法的参数辨识与模型优化",锂电池SOC估计模型 simulink SOC估算卡尔曼滤波估算 SOC电池参数辨识模型10个; 卡尔曼滤波算法锂电池SOC估算估算模型15个; 卡尔曼滤波31个; ,锂电池SOC估计模型; Simulink; SOC估算; 卡尔曼滤波估算; 电池参数辨识模型; 锂电池SOC卡尔曼滤波估算模型; 卡尔曼滤波,基于Simulink的锂电池SOC估计与卡尔曼滤波算法研究

    苍鹰算法优化BP神经网络参数:多输入单输出预测建模及效果展示 注:此程序为matlab编写,可直接运行出多种预测结果图与评价指标 效果图为测试数据展示,具体预测效果以个人数据为准 ,苍鹰优化算法NG

    苍鹰算法优化BP神经网络参数:多输入单输出预测建模及效果展示 注:此程序为matlab编写,可直接运行出多种预测结果图与评价指标。效果图为测试数据展示,具体预测效果以个人数据为准。,苍鹰优化算法NGO优化BP神经网络的软值和阈值参数做多输入单输出的拟合预测建模。 程序内注释详细直接替数据就可以使用。 程序语言为matlab。 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替就可以得到自己满意的效果。 ,核心关键词: 苍鹰优化算法; NGO优化; BP神经网络; 软值和阈值参数; 多输入单输出拟合预测建模; 程序内注释; MATLAB程序语言; 拟合预测图; 迭代优化图; 线性拟合预测图; 预测评价指标。,基于苍鹰优化算法的NGO-BP神经网络模型:多输入单输出拟合预测建模与评估

    基于java+ssm+mysql的医院交互系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    GTP4ALL的安装文件

    GTP4ALL的安装文件

Global site tag (gtag.js) - Google Analytics