精华内容
下载资源
问答
  • 判断当前时间是否设定的时间范围内的shell脚本
    千次阅读
    2020-04-30 19:16:36
    #!/bin/bash
    
    start_time=$(uci get cowbqos.@cowbqos[0].start_time 2>/dev/null) #获取开始时间,格式为00:00
    time=$(date "+%Y-%m-%d "$start_time":00")
    time_start=`date -d "$time" +%s`
    
    stop_time=$(uci get cowbqos.@cowbqos[0].stop_time 2>/dev/null)   #获取结束时间,格式为00:00
    time=$(date "+%Y-%m-%d "$stop_time":00")
    time_stop=`date -d "$time" +%s`
    
    cur_time=$(date "+%Y-%m-%d %H:%M:%S")   #获取当前时间,格式为 2020-04-30 19:06:34
    time_cur=`date -d "$cur_time" +%s`
    
    if [ $time_start -lt $time_stop ]; then 
     [ $time_cur -lt $time_stop -a $time_cur -gt $time_start ] && echo "可以开始了"
    fi
    if [ $time_start -gt $time_stop ]; then
     [ $time_cur -lt $time_stop -a $time_cur -gt $time_start ] || echo "可以开始了"
    fi
    

    目的:如当前时间在设定允许运行的时间段内,则运行某程序。
    有两种可能:
    1,开始时间比结束时间大(只在同一天),如07:00-08:00(实际只允许一个钟)
    2,开始时间比结束时间小(可到第二天),如08:00-07:00(实际允许23个钟头)
    上面代码兼顾了两种情况。

    更多相关内容
  • java判断一个Date时间在不在某段Date时间范围之内

                有时候我们会遇到这类问题,比如在OA系统提交年假申请时,系统如何校验当前提交的休假时间,有没有在之前的单据中提交并审批通过的(通过所有流程的年假单据通常会存在一张年假信息表里,记录了年假的开始结束日期)时间发生重叠呢?  下面我们讨论一下这个时间校验的问题:一个Date类型时间或一段Date类型时间在不在某段Date时间范围之中。

               举一个栗子:某员工在9月初提交了一条年假申请单(申请时间为9月6日上午至9月7日上午,1天半)并被终审通过了,而该员工后来又提交了一条年假申请单,可能由于粗心,忘记了9月7日上午已经请过年假了,又想把9月7日全天申请了,这个时候系统该如何进行校验呢?(系统不能让本单提交成功),以下为例子的真实应用场景。



     实现步骤分析:

             一、要实现本功能的前提条件是,数据库中存放审批通过的年假信息的表中的数据存储格式,是否满足业务需求


    经过调查发现 存储 请假开始时间与结束时间的字段为 oracle 的 Timestamp 类型字段,而由于受数据库时间格式制约(需要进行设置),这种存储的时间数据在查询语句中判断不出上午或下午,看上图所示,虽然显示数据查询出上午下午,但是在查询语句条件中很难加入对上午下午的判断。故造成的影响是,当天的信息不得不取到后台中进行判断了(取出之后转成Date类型)。

    后台执行的查询语句发现,之前的1天半年假,系统将其转化成两条记录记录存入年假信息表中(后台对年假以天为维度进行拆分的)

    程序开始进行年假校验,参考代码如下

     //校验年假  
      //fdChanged 申请人, mark1  >= ,  mark2  <= ,  fdStartDate 用户录入开始日期, fdEndDate 用户录入结束日期, fdStartNoon 用户录入 开始日期上下午标志, fdEndNoon 用户录入结束日期上下午标志
          Map<String,String> fdReviewNoMap = checkAnnualLeave(fdChanged, mark1, mark2, fdStartDate, fdEndDate, fdStartNoon, fdEndNoon);
          StringBuffer info = new StringBuffer();
    	  if(fdReviewNoMap.size() > 0){
    		  Iterator<Entry<String,String>> iter = fdReviewNoMap.entrySet().iterator();
    		  while (iter.hasNext()) {
    			  Map.Entry entry = (Map.Entry) iter.next();
    			  Object val = entry.getValue();
    			  info.append(val).append(",");
    		  }
    		  System.out.println("本次年假申请时间与以前的年假申请单年假时间发生重叠,重叠的年假单据号为:"+info);
    		  map.put("info", "本次年假申请时间与以前的年假申请单年假时间发生重叠,重叠的年假单据号为:"+info);
    		  list.add(map);
    	  }


    checlAnnualLeave() 方法为 年假校验方法

    /**
       * 检查年假
       * @param fdChanged 申请人
       * @param mark1
       * @param mark2
       * @param fdStartDate 用户录入开始日期
       * @param fdEndDate  用户录入结束日期
       * @param fdStartNoon  用户录入 开始日期上下午标志
       * @param fdEndNoon 用户录入结束日期上下午标志
       * @return Map<String,String> fdReviewNoMap
       * @throws Exception
       */
      @SuppressWarnings("unchecked")
      public Map<String,String> checkAnnualLeave(String fdChanged,String mark1,String mark2,String fdStartDate,String fdEndDate,
    		               String fdStartNoon,String fdEndNoon) throws Exception{
    	  //检查本次年假是否已经请过了(走完流程的)
          StringBuffer sql = new StringBuffer();
          sql.append(" select   t.fd_review_no,t.fd_start,t.fd_end,t.fd_count from km_attendanceinfol_leave t where 1=1 ");
          sql.append(" and t.fd_holiday_type = '0' "); //假期类型为年假
          sql.append(" and t.fd_type = '1' ");    //流程类型  1: 请假 2: 外出 3: 销假 4:调休
          sql.append(" and t.fd_attendance_id = '").append(fdChanged).append("'"); //申请人
          sql.append(" and to_char(t.fd_start,'yyyy-mm-dd hh12:mi:ss') ").append(mark1).append("'").append(fdStartDate).append(" 12:00:00'");
          sql.append(" and to_char(t.fd_end,'yyyy-mm-dd hh12:mi:ss') ").append(mark2).append("'").append(fdEndDate).append(" 12:00:00'");
          Session session = this.sysOrgPersonService.getBaseDao().getHibernateSession();
    	  List<Object[]> querylist = session.createSQLQuery(sql.toString()).list();
          
          System.out.println("查询年假sql:"+sql.toString());
          String fdReviewNo = "";  //年假单据号
          Map<String,String> fdReviewNoMap = new HashMap<String,String>();
          Timestamp tstart = null,tend = null;//开始时间,结束时间
          Date dstart = null, dend = null;
          int checkNoon = 0;  //判断数据是上午: 1 ,下午: 2 , 全天:  3
          if(querylist.size() != 0){
        	  for(Object[] obj : querylist){
        		  fdReviewNo = (String)obj[0];
        		  System.out.println(obj[0]+" start:"+obj[1]+" end:"+obj[2]+" count:"+obj[3]);
        		  /**受Oracle 字段类型Timestamp的条件限制(判断不出上午或下午)只能将当天数据都查出来 , 所以并不是查出来单据就一定是重叠的,需要进行判断 
        		  1.1  用户输入数据如果是同一天,则将录入数据与后台数据进行比较,看时间是否有重叠部分
        		  1.2  用户输入数据跨天 ,要看是否有重叠的部分
        		    		   请假开始日期 fdStartDate:2017-09-07 fdStartNoon:1
    			    		   请假结束日期 fdEndDate:2017-09-07 fdEndNoon:1
    			    		  当前时间:2017-09-07 00:00:00
    			    		  当前时间:2017-09-07 12:00:00
        		  */
        		  tstart = (Timestamp)obj[1]; //得到 Timestamp
        		  tend = (Timestamp)obj[2];
        		  dstart = tstart;                //得到 date
        		  dend = tend;
        		  if(fdStartDate.equals(fdEndDate)){//用户输入数据如果是同一天
        			  //将后台数据与当天中午时间进行校验,判断数据是上午: 1 ,下午: 2 , 全天:  3 
        			  //判断后台数据是上午,下午 ,全天
        			  checkNoon = checkForenoon(dstart,dend);
        			  System.out.println("checkNoon:"+checkNoon);
        			  switch(checkNoon){
        			       case 1:  //后台数据是上午 ,开始校验用户输入数据
        			           if(fdStartNoon.equals("0") && fdEndNoon.equals("0") ){
        			        	   //用户输入数据也是上午,时间发生重叠
        			        	   fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			           }else if(fdStartNoon.equals("0") && fdEndNoon.equals("1") ){
        			        	   //用户输入数据是全天,时间发生重叠
        			        	   fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			           }
        			           break;
        			       case 2:  //后台数据是下午
        			           if(fdStartNoon.equals("1") && fdEndNoon.equals("1") ){
        			        	   //用户输入数据也是下午,时间发生重叠
        			        	   fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			           }else if(fdStartNoon.equals("0") && fdEndNoon.equals("1") ){
        			        	   //用户输入数据是全天,时间发生重叠
        			        	   fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			           }
        			           break;
        			       case 3:  //后台数据是全天
        			           //用户输入数据不管是上午或下午都会发生重叠,因为当天年假已经被用掉了
        			           fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			           break;
        			       default: //后台数据有错误
        						System.out.println("default 后台数据有错误");
        						break;
        			  }
        		  }else{//用户输入数据跨天
        			  //跨天的情况,跨天并不代表一定是重叠的,需要进行判断是否有重叠部分,结合后台数据 与 用户输入数据进行校验
        			  //用户输入时间数据比后台数据范围要大 因此需要 判断 后台时间在不在用户输入时间范围内即可
        			  if(checkInTime(dstart,dend,fdStartDate, fdStartNoon, fdEndDate, fdEndNoon)){
        				  //后台数据时间在用户输入时间范围之内,有重叠
        			      fdReviewNoMap.put(fdReviewNo, fdReviewNo);  //将单据号放入Map中(进行去重操作)
        			  }
        		  }
        	  }
        	  System.out.println("fdReviewNoMap.size():"+fdReviewNoMap.size());
          }
          return fdReviewNoMap;
      } 

    校验时间范围checkInTime()方法

    	/**
    	 * 校验时间范围
    	 * @param start 后台数据开始时间
    	 * @param end  后台数据结束时间
    	 * @param fdStartDate 用户录入开始日期
    	 * @param fdStartNoon 用户录入 开始日期上下午标志
    	 * @param fdEndDate 用户录入结束日期
    	 * @param fdEndNoon 用户录入结束日期上下午标志
    	 * @return true 后台数据时间与用户录入时间有重叠   false 没有重叠
    	 * @throws ParseException 
    	 */
    	public boolean checkInTime(Date start,Date end,String fdStartDate,String fdStartNoon,String fdEndDate,String fdEndNoon) throws ParseException{
    		
    		  //将用户录入开始日期与结束日期 转成 Date类型
    		  String startTime = fdStartNoon.equals("1") ? fdStartDate+" 12:00:00" : fdStartDate+" 00:00:00";
    		  String endTimes  = fdEndNoon.equals("1") ? fdEndDate+" 23:59:59" : fdEndDate+" 12:00:00";
    		  Date beginTime = strFormatDate(startTime);
    		  Date endTime = strFormatDate(endTimes);
    		  //判断后台数据时间在不在用户录入时间范围之中
    		  boolean falg1 = belongCalendar(start,beginTime,endTime);
    		  boolean falg2 = belongCalendar(end,beginTime,endTime);
    		  if(falg1 && falg2){
    			  return true;
    		  }		  
    		  return false;
    	}

    判断时间是否在某段时间段范围内belongCalendar()
    	/**
    	 * 判断时间是否在时间段内
    	 * @param nowTime
    	 * @param beginTime
    	 * @param endTime
    	 * @return
    	 */
    	public  boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
    	    Calendar date = Calendar.getInstance();
    	    date.setTime(nowTime);
    	    Calendar begin = Calendar.getInstance();
    	    begin.setTime(beginTime);
    	    Calendar end = Calendar.getInstance();
    	    end.setTime(endTime);
    	    if (date.after(begin) && date.before(end)) {
    	        return true;
    	    }else if(nowTime.compareTo(beginTime)==0 || nowTime.compareTo(endTime) == 0 ){
    	    	return true;
    	    }else {
    	        return false;
    	    }
    	}

    判断某时间段属于上午下午还是全天 checkForenoon()

    	/**
    	 * 判断某时间段属于上午下午还是全天
    	 * @param start 开始时间
    	 * @param end  结束时间
    	 * @return 1 是上午  2 是下午  3 全天  0 错误
    	 * @throws ParseException 
    	 */
    	private int checkForenoon(Date start,Date end) throws ParseException{
    		 String sday = dateFormatStr(start);
    		 Date  middle = strFormatDate(sday+" 12:00:00"); //得到当天中午数据
    		 if(start.compareTo(middle) < 0 && end.compareTo(middle) == 0){ //上午 start:2017-09-07 00:00:00.0 end:2017-09-07 12:00:00.0
    			 return 1;
    		 }
    		 if(start.compareTo(middle) == 0 && end.compareTo(middle) > 0){ //下午 2016-08-05 12:00:00.0 end:2016-08-05 23:59:59.0
    			 return 2;
    		 }
    		 if(start.compareTo(middle) < 0 && end.compareTo(middle) > 0){//全天 start:2017-09-06 00:00:00.0 end:2017-09-06 23:59:59.0
    			 return 3;
    		 }
    		 return 0 ;
    	}

    日期格式化方法 dateFormatStr()

    	/**
    	 * 日期格式化
    	 * @param Date
    	 * return  格式化字符串如 2017-09-07
    	 * @param date
    	 */
    	private String dateFormatStr(Date date) {
    		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    		String time = format.format(date);
    //		System.out.println("时间:" + time);
    		return time;
    	}

    字符串日期转date

    	/**
    	 * 字符串日期转为Date
    	 * @param ld
    	 * @throws ParseException
    	 */
    	private Date strFormatDate(String ld) throws ParseException {
    		DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		Date lendDate = format.parse(ld);
    //		System.out.println(lendDate);
    		return lendDate;
    	}

    时间格式化

    	/**
    	 * 时间格式化
    	 * @param Date
    	 * return  格式化字符串如 2017-09-07 12:00:00
    	 * @param date
    	 */
    	private String timeFormatStr(Date date) {
    		if(date == null)
    		return null;
    		DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		String time = format.format(date);
    //		System.out.println("时间:" + time);
    		return time;
    	}


    通过以上方法,可以在特定场合下解决了年假校验的问题了。








     

    展开全文
  • 判断时间是否一个范围之内

    千次阅读 2018-04-19 09:25:26
    全文全为网上资料需求:当时间凌晨0点至0点5分之间程序不执行。也就是实现判断当前时间点是否00:00:00至00:05:00之间方法:Java代码 /** * 判断时间是否时间段 * * @param date * 当前时间 yyyy-MM...

    全文全为网上资料

    需求:当时间在凌晨0点至0点5分之间程序不执行。

    也就是实现判断当前时间点是否在00:00:00至00:05:00之间

    方法:

    Java代码
    1. /** 
    2.  * 判断时间是否在时间段内 
    3.  *  
    4.  * @param date 
    5.  *            当前时间 yyyy-MM-dd HH:mm:ss 
    6.  * @param strDateBegin 
    7.  *            开始时间 00:00:00 
    8.  * @param strDateEnd 
    9.  *            结束时间 00:05:00 
    10.  * @return 
    11.  */  
    12. public static boolean isInDate(Date date, String strDateBegin,  
    13.         String strDateEnd) {  
    14.     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    15.     String strDate = sdf.format(date);  
    16.     // 截取当前时间时分秒  
    17.     int strDateH = Integer.parseInt(strDate.substring(1113));  
    18.     int strDateM = Integer.parseInt(strDate.substring(1416));  
    19.     int strDateS = Integer.parseInt(strDate.substring(1719));  
    20.     // 截取开始时间时分秒  
    21.     int strDateBeginH = Integer.parseInt(strDateBegin.substring(02));  
    22.     int strDateBeginM = Integer.parseInt(strDateBegin.substring(35));  
    23.     int strDateBeginS = Integer.parseInt(strDateBegin.substring(68));  
    24.     // 截取结束时间时分秒  
    25.     int strDateEndH = Integer.parseInt(strDateEnd.substring(02));  
    26.     int strDateEndM = Integer.parseInt(strDateEnd.substring(35));  
    27.     int strDateEndS = Integer.parseInt(strDateEnd.substring(68));  
    28.     if ((strDateH >= strDateBeginH && strDateH <= strDateEndH)) {  
    29.         // 当前时间小时数在开始时间和结束时间小时数之间  
    30.         if (strDateH > strDateBeginH && strDateH < strDateEndH) {  
    31.             return true;  
    32.             // 当前时间小时数等于开始时间小时数,分钟数在开始和结束之间  
    33.         } else if (strDateH == strDateBeginH && strDateM >= strDateBeginM  
    34.                 && strDateM <= strDateEndM) {  
    35.             return true;  
    36.             // 当前时间小时数等于开始时间小时数,分钟数等于开始时间分钟数,秒数在开始和结束之间  
    37.         } else if (strDateH == strDateBeginH && strDateM == strDateBeginM  
    38.                 && strDateS >= strDateBeginS && strDateS <= strDateEndS) {  
    39.             return true;  
    40.         }  
    41.         // 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数小等于结束时间分钟数  
    42.         else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
    43.                 && strDateM <= strDateEndM) {  
    44.             return true;  
    45.             // 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数等于结束时间分钟数,秒数小等于结束时间秒数  
    46.         } else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
    47.                 && strDateM == strDateEndM && strDateS <= strDateEndS) {  
    48.             return true;  
    49.         } else {  
    50.             return false;  
    51.         }  
    52.     } else {  
    53.         return false;  
    54.     }  
    55. }  



    判断某个时间是否是在条件时间的n天之内

    正数表示在条件时间n天之后,负数表示在条件时间n天之前

      /**
         * 判断time是否在now的n天之内
         * @param time
         * @param now
         * @param n    正数表示在条件时间n天之后,负数表示在条件时间n天之前
         * @return
         */
        public static boolean belongDate(Date time, Date now, int n) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();  //得到日历
            calendar.setTime(now);//把当前时间赋给日历
            calendar.add(Calendar.DAY_OF_MONTH, n);
            Date before7days = calendar.getTime();   //得到n前的时间
            if (before7days.getTime() < time.getTime()) {
                return true;
            } else {
                return false;
            }
        }
           //打印测试
            Date time  = stringToDate("2017-3-13");//string转为date
            Date now = new Date();//直接new对象,获取的是当前时间2017-3-16
            System.out.println(belongDate(time,now,-2));//2天前
            System.out.println(belongDate(time,now,2));//2天后
            System.out.println(belongDate(time,now,-7425

    这里写图片描述

    判断某个时间是否是在条件的起始时间与结束时间之内

    /**
         * 判断time是否在from,to之内
         *
         * @param time 指定日期
         * @param from 开始日期
         * @param to   结束日期
         * @return
         */
        public static boolean belongCalendar(Date time, Date from, Date to) {
            Calendar date = Calendar.getInstance();
            date.setTime(time);
    
            Calendar after = Calendar.getInstance();
            after.setTime(from);
    
            Calendar before = Calendar.getInstance();
            before.setTime(to);
    
            if (date.after(after) && date.before(before)) {
                return true;
            } else {
                return false;
            }
        }
            //打印测试
            Date time1  = stringToDate("2017-3-11");
            Date time2 = stringToDate("2017-3-15");
            Date time3 = stringToDate("2017-3-17");
            Date from = stringToDate("2017-3-12");
            Date to= stringToDate("2017-3-16");
            System.out.println(belongCalendar(time1,from,to));
            System.out.println(belongCalendar(time2,from,to));
            System.out.println(belongCalendar(time3,from,31
    

    这里写图片描述

    判断给定时间与当前时间相差多少天

       public static long getDistanceDays(String date) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    
            long days = 0;
            try {
                Date time = df.parse(date);//String转Date
                Date now = new Date();//获取当前时间
                long time1 = time.getTime();
                long time2 = now.getTime();
                long diff = time1 - time2;
                days = diff / (1000 * 60 * 60 * 24);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return days;//正数表示在当前时间之后,负数表

    PS

    以上方法涉及到的string转为date等时间日期转换问题。
    欢迎查看我的以下两篇博客:
    1。Java Calendar日历与Date日期的相互转:
    http://blog.csdn.net/demonliuhui/article/details/62423646
    2。 Java Date与String的相互转换:
    http://blog.csdn.net/demonliuhui/article/details/62423158

    归纳3

    /**
         * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
         * 
         * @param nowTime 当前时间
         * @param startTime 开始时间
         * @param endTime 结束时间
         * @return
         */
        public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
            if (nowTime.getTime() == startTime.getTime()
                    || nowTime.getTime() == endTime.getTime()) {
                return true;
            }


            Calendar date = Calendar.getInstance();
            date.setTime(nowTime);


            Calendar begin = Calendar.getInstance();
            begin.setTime(startTime);


            Calendar end = Calendar.getInstance();
            end.setTime(endTime);


            if (date.after(begin) && date.before(end)) {
                return true;
            } else {
                return false;
            }
        }
    /**
    * 判断时间是否在[startTime, endTime]区间,注意时间格式要一致
    * @param nowTime
    * @param startTime
    * @param endTime
    * @return
    */
        public static boolean isEffectiveDate(String nowTime, String startTime, String endTime,String dateFormat) {
        DateFormat df = new SimpleDateFormat(dateFormat);
       
        Date nowDate = null;
    Date startDate = null;
    Date endDate = null;
    try {
    nowDate = df.parse(nowTime);
    startDate = df.parse(startTime);
    endDate = df.parse(endTime);
    } catch (ParseException e) {
    e.printStackTrace();
    }
       
            if (nowDate.getTime() == startDate.getTime()
                    || nowDate.getTime() == endDate.getTime()) {
                return true;
            }


            Calendar date = Calendar.getInstance();
            date.setTime(nowDate);


            Calendar begin = Calendar.getInstance();
            begin.setTime(startDate);


            Calendar end = Calendar.getInstance();
            end.setTime(endDate);


            if (date.after(begin) && date.before(end)) {
                return true;
            } else {
                return false;
            }
        }

    展开全文
  • Python中获取日期和时间很简单,主要使用time和datetime包 1、获取当前时间并格式化 from dateutil import rrule from datetime import datetime import time #获取日期,格式化yyyy-mm-dd hh:mm:ss #第一种方式...

    在Python中获取日期和时间很简单,主要使用time和datetime包

    1、获取当前时间并格式化

    from dateutil import rrule
    from datetime import datetime
    import time
    
    
    #获取日期,格式化yyyy-mm-dd hh:mm:ss
    #第一种方式
    strtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
    print(strtime)
    print(type(strtime))
    #输出:2021-11-03 16:44:08
    #输出:<class 'str'>
    
    #第二种方式
    now = datetime.now()
    print(now.strftime('%Y-%m-%d %H:%M:%S'))
    #输出:2021-11-03 16:44:08
    

    可以发现,strftime将时间对象转换成了str。

    2、str转日期

    from dateutil import rrule
    from datetime import datetime
    import time
    
    #str转日期
    #第一种方式
    initDate = datetime.strptime('2021-11-03 16:44:08','%Y-%m-%d %H:%M:%S')
    print(initDate)
    print(type(initDate))
    #输出:2021-11-03 16:44:08
    #     <class 'datetime.datetime'>
    
    #第二种方式
    secondDate = time.strptime('2021-11-03 16:44:08','%Y-%m-%d %H:%M:%S')
    print(secondDate)
    print(type(secondDate))
    #time.struct_time(tm_year=2021, tm_mon=11, tm_mday=3, tm_hour=16, tm_min=44, tm_sec=8, tm_wday=2, tm_yday=307, tm_isdst=-1)
    #<class 'time.struct_time'>
    
    

    3、日期时间差

    from dateutil import rrule
    from datetime import datetime
    import time
    
    #计算日期差
    untilYear = 2018
    untilMonth = 5
    untilDay = 1
    
    # 2018年第一天
    firstDay = datetime(untilYear,1,1)
    endDay = datetime(untilYear,untilMonth,untilDay)
    
    #rrule.DAILY计算天差,此外还有  星期(WEEKLY),年(YEARLY)
    days = rrule.rrule(freq = rrule.DAILY,dtstart=firstDay,until=endDay)
    
    print('相差:',days.count(),'天')
    
    #打印输出:   相差: 121 天
    

    此处主要使用到了dateutil的rrule。
    关于python的日期和时间,用法很多,此处只记录自己比较常用的部分

    4、判断当前时间是否在某个时间范围内

    import datetime
    
    # 范围时间
    d_time = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '9:00', '%Y-%m-%d%H:%M')
    d_time1 = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '18:00', '%Y-%m-%d%H:%M')
    
    # 当前时间
    n_time = datetime.datetime.now()
    
    # 判断当前时间是否在范围时间内
    if n_time > d_time and n_time < d_time1:
        print(True)
    else:
        print(False)
    
    执行输出:True
    
    展开全文
  • 项目新增需求需要每天指定的4个时间段给用户提示参加活动,当前时间为服务段返回的. 当天的很简单,直接对比两个时间(long型)大小就可以了,但是要求是每天都要执行.因此就需要针对时间戳进行字符转换和 截取操作...
  • 范围管理项目范围控制

    千次阅读 2020-04-28 15:43:27
    一、项目范围控制涉及的主要内容 范围控制是监督项目和产品范围状态,管理范围基准变更的过程。范围控制涉及到影响引起范围变更的因素,确保所有被请求的变更、推荐的纠正...变更可避免,因此每个项目上,都必...
  • Python 输出指定范围内的素数

    千次阅读 2020-11-21 03:16:47
    #输出指定范围内的素数#非数字字符串会出错,一开始就应该避免错误的发生(限定范围),而不是报错了再来改进,#可以继续改进用列表输出质数和合数import mathlower = int(input("输入区间(包括)最小值: "))upper = ...
  • C/C++ 中生成特定范围内的随机数

    千次阅读 2016-05-12 18:36:10
    大家写 C/C++ 程序时,难免会遇到要求获取某个范围内的随机数,我查阅了一些资料后,总结如下。本文分两部分,先介绍 C 语言中与随机数相关的两个函数 srand 和 rand,后介绍 C++ 中的 random 库,每一部分最后会...
  • C语言求给定范围内的所有素数

    万次阅读 多人点赞 2017-04-28 12:53:29
    判定一个整数m是否为素数的关键就是要判定整数m能否被除1和它自身以外的任何其他整数所整除,若都能整除,则m即为素数。 本题求的是给定范围start〜end之间的所有素数,考虑到程序的通用性,需要从键盘上输入...
  • Javaint及它的取值范围

    万次阅读 2018-12-24 08:58:22
    int是Java中的8种基本类型一,一个int值占4个byte(8个二进制位) 8中基本类型所占字节分别是多少: int 4个字节 short 2个字节 long 8个字节 char 2个字节 float 4个字节 double 8个字节 boolean ...
  • quartz设置一段时间内执行

    千次阅读 2019-08-02 14:48:08
    最近有个需求,需要一段时间(如8月1号到10号),每天间隔一定时间(如30分钟)执行指定次数(5次)的任务。 用quartz来实现任务调度,CronTrigger和Simple Trigger太满足要求,看了下quartz源码,发现quartz...
  • 大家好,今天说一个新的mfc编程中遇到的错误,...发生这样的错误,其实是因为DISPLAY_GUID这个结构体将这个函数或是这个cpp源文件外部使用,但是如果我这里声明一个局部变量,当执行超出这个范围之后,这个变量
  • Shell值命令exit

    千次阅读 多人点赞 2022-02-16 22:45:48
    Shell值命令exit 介绍: exit 用于退出当前shell环境进程结束运行,并且可以返回一个状态码.一般使用$?可以获取状态码. 语法: 正确退出语法 exit #默认返回状态码0 ,一般代表命令执行成功 错误退出语法 exit ...
  • 范围选区是一种常见的对象选择方式,一个子图中,可以某一个轴方向上用鼠标选择起始范围的数据,这个特性可用来实现数据缩放(datazoom)。matplotlib中的范围选区属于部件(widgets),matplotlib中的部件都...
  • 项目范围管理:范围定义

    千次阅读 2020-07-28 11:43:34
    定义范围的主要作用是:明确所收集的需求哪些将包括项目范围内,哪些将排除项目范围外,从而明确项目、服务或输出的边界。 范围定义的内容和作用:由于收集需求过程中识别出的所有需求未必都包含项目中...
  • 只能被1和自身整除,并且为0和1的数我们称为素数/质数。相信大家学习python循环取素数的时候,一定遇到了这样或那样的问题,或者说只会使用for循环取素数。那么今天,给大家讲解一下方法和技巧! 1、方法1 (1)...
  • 求助:我sql里面建了一个存储过程下面的页面中传递2个变量给存储过程,执行查询.总是报错 ============================ 接收本文件传送的参数后查询 ============================ dim wzfid,wztitle fid=...
  • public static boolean yearMonthBetween ( String nowDate , String startDate , String endDate ) throws Exception { SimpleDateFormat format = new SimpleDateFormat ...执行结果:
  • 项目范围管理

    千次阅读 2019-04-29 00:28:48
    # 范围管理 过程 输入 输出 工具 技术 项目范围管理 6个过程 1.编制范围管理计划过程 定义、确认、控制项目范围的过程进行描述 2.收集需求 为实现项目目标,明确、记录项目干系人相关...
  • MySQL查询优化二-范围优化(Range Optimization) 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:12951803 环境: MySQL版本:5.5.15 操作系统:windows 本文讨论范围的优化...
  • 百度地图API本地搜索与范围搜索

    万次阅读 2017-07-23 15:05:13
    地图服务是指可以提供数据信息的接口,比如说本地搜索/路线规划等,下面小编给大家整理下百度地图API本地搜索和范围搜索,具体请看下文。 地图服务概述  地图服务是指那些提供数据信息的接口,比如本地搜索、...
  • 第5章 项目范围管理确保项目做且只做所需的全部工作定义和控制哪些工作应该包括项目,哪些应该包括项目内范围的定义: 产品范围——某项产品、服务或成果所具有的特性和功能 项目范围——为交付具有规定特性...
  • ArcGIS重新计算要素类范围

    千次阅读 2017-06-15 08:57:16
    日常的工作中,很多时候,空间数据的四至范围经过多次操作,包括空间数据的编辑、导入、导出等,图层要素类的四至范围会发生变化,导致再对图层进行全图居中或者定位的时候产生误差,ArcGIS提供了重新计算图层...
  • jsp九大内置对象与四大域对象

    万次阅读 多人点赞 2017-03-31 15:15:10
    如果每次我们jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此设计jsp时,jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可....
  • 最近项目中一直使用定时任务完成一些业务逻辑,比如天气接口的数据获取,定时发送短信,邮件。以及商城中每天用户的限额,定时自动收货等等。定时器项目中是我们常常会使用到的一个手段,今天我们就来看下...
  • Oracle SQL调优系列看懂执行计划explain

    千次阅读 多人点赞 2020-06-18 10:49:02
    Oracle调优看懂Oracle执行计划1、写作前言2、什么是执行计划? 1、写作前言 之前曾经拜读过《收获,不止sql调优》一书,此书是国内DBA写的一本很不错的调优类型的书,是一些很不错的调优经验的分享。虽然读了一遍...
  • 计算1000以内所有能被7整除的整数和 代码如下: public class Demo5 { public static void main(String[] args) { int i=1; int n=1; int sum1=0; int sum2=0; while (i<=1000/7)...
  • 思路: 这道题关键是随机整数的处理,要想有随机整数的...然后用for循环执行10次该方法,依次把产生的10个随机数存放到数组中,接着用两个for循环即冒泡法排序,最后用for循环依次打印排序后的随机数。 代码实现:...
  • 软件设计耦合性与聚性的区别

    千次阅读 多人点赞 2018-10-28 15:09:29
    耦合性 ...聚性也叫块联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。 模块中组成元...
  • SAP成本中心类型与功能范围

    万次阅读 2015-07-30 10:36:04
    SAP中成本中心类型(Cost Center Type)和功能范围(Function Area)是两个常见并且容易接触到的概念。这两个概念与费用核算、成本核算、财务报表编制、科目设置等都有关系。现在结合相关配置和实务说明如下:  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 818,832
精华内容 327,532
关键字:

不在执行范围之内