精华内容
下载资源
问答
  • 判断个时间是不是同一天

    千次阅读 2015-07-12 10:35:38
    在项目中很多时候需要判断个时间是否是同一天,例如用户每天都能领某种福利一且只能领取一,这时候当用户领取福利的时就需要判断用户上次领取的时间与当前时间是不是同一天,不是同一天的话可以领取,否则不能...

            在项目中很多时候需要判断两个时间是否是同一天,例如用户每天都能领某种福利一次且只能领取一次,这时候当用户领取福利的时就需要判断用户上次领取的时间与当前时间是不是同一天,不是同一天的话可以领取,否则不能领取。

            一般来讲我会用time(NULL)来获取用户当前领取时间,它返回的是一个整数,代表从CUT(Coordinated Universal Time 格林威治时间)时间1970年1月1日00:00:00到当前时刻的秒数,正因为它是一个整数所以这样便于存储和比较。假如两个时间分别是oldtime和newtime,他们都是用time(NULL)得到的整数时间,我们想判断他们是否是同一天只需要分别求得他们的天数,然后判断是不是相等即可,即这样:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime)
    {
    	int iDayOld = static_cast<int>(tOldTime/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>(tNewTime/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
            理论上来讲这样判断就可以了,但是仔细分析会发现这样的判断是以格林威治时间为标准的,也就是说计算的是从格林威治时间1970年1月1日00:00:00以来的第几天,但是我们实际需要计算的是对于我们当前时区来讲的第几天,所以直接用上述算法是有问题的。例如我们当前时区的时间是零点,正好是新的一天,但格林威治时间却还没到零点,这就差了一天,所以要修改算法,以当前时区来计算:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime)
    {
    	struct timezone tvTimeZone;
    	gettimeofday(NULL, &tvTimeZone);
    	int iTimeZoneSeconds = (-tvTimeZone.tz_minuteswest*60);
    	int iDayOld = static_cast<int>((tOldTime+iTimeZoneSeconds)/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>((tNewTime+iTimeZoneSeconds)/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

            tvTimeZone.tz_minuteswest返回的是当前时区时间与格林威治时间时间差了多少分钟,所以用之前得到的秒数减去与格林威治时间相差的秒数就得到了当前时区对应的秒数,这样再除以一天的秒数就得到了正确的天数。其实有不少情况我们不想以零点来判断是否是新的一天,好比我们把凌晨5点当做分割线,凌晨5点之前是昨天,之后是新的一天,这时候再判断两个时间是不是新的一天又不一样了。其实改动也很小,只需要在原算法中加个偏移量就好了:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime, int iOffSetTime)
    {
    	struct timezone tvTimeZone;
    	gettimeofday(NULL, &tvTimeZone);
    	int iTimeZoneSeconds = (-tvTimeZone.tz_minuteswest*60);
    	int iDayOld = static_cast<int>((tOldTime+iTimeZoneSeconds-iOffSetTime)/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>((tNewTime+iTimeZoneSeconds-iOffSetTime)/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

            例如,IsANewDay(oldtime, newtime, 5*60*60)即返回相对于凌晨五点来讲oldtime和newtime是不是新的一天,我们得到的时间本来是相对于格林威治时间1970年1月1日00:00:00的秒数(相对于零点),如果想以凌晨5点为标准的话,我们只需要计算相对于格林威治时间1970年1月1日05:00:00的秒数即可,所以把时间减去offsettime(5*60*60)就好了。



    展开全文
  • JQuery EasyUI 发送两次请求

    千次阅读 2015-12-28 22:08:41
    ajax次点击发送两次请求 或者是 按钮连击造成的问题,然后测试了大圈有上网了搜了好多帖子后才发现想的 简单了。 自己查看之下发现左侧生成菜单是组超链接,在无双击的情况下似乎并无可能会发送两次连接, 如...

    开发环境:S2SH + JQuery EasyUI  1.3.2 

    前一段发现了一个问题,每次点击左侧菜单打开右侧页面的时候,后台都会接收到两次请求,一开始以为是

    ajax一次点击发送两次请求 或者是 按钮连击造成的问题,然后测试了一大圈有上网了搜了好多帖子后才发现想的

    简单了。

    自己查看之下发现左侧生成菜单是一组超链接,在无双击的情况下似乎并无可能会发送两次连接,

    如下图:


    至此本人暂时无可奈何了,直到之后有一天无意间发现后台显示信息正常,赶紧从SVN服务器上Down下代码

    比对,才发现一次在修改界面中大意之下把

    class="easyui-datagrid"

    删除了,于是上网搜索资料,才发现原来是EasyUI解析的问题,因为html代码中利用class声明了datagrid,导致EasyUI解析class代码的时候先解析class声明中的datagrid,这样组件就请求了一次url;然后我又在加载的js的时候自动请求了一次url。这样就导致了重复发送了两次加载请求,解决的方法就是只用一种初始化方法来声明EasyUI组件以避免重复的提交请求。

    第一种:删除Js中的数据加载请求,改为在jsp页面,修改后的代码如下:

    <table id="tableDataGrid" <span style="font-size: 18px; white-space: pre;">class="easyui-datagrid"</span> fit="true" title="" style="width:auto;height:auto"
    		data-options="<span style="color:#ff0000;">url:'请求加载url'</span>,loadMsg:'正在加载列表,请稍等 ... ',iconCls: 'icon-edit',rownumbers:true,singleSelect: true,
                	method: 'get', pagination:true,pageList:[20,50,100],pageSize:20">
    </table>

    第二种:删除Jsp页面中的<table>的class声明(class="easyui-datagrid"),修改后的代码如下:

    <table id="tableDataGrid" fit="true" title="" style="width:auto;height:auto"
    		data-options="loadMsg:'正在加载列表,请稍等 ... ',iconCls: 'icon-edit',rownumbers:true,singleSelect: true,
                	method: 'get', pagination:true,pageList:[20,50,100],pageSize:20">
    </table>
    参考:点击打开链接

    展开全文
  • hudson(jenkins)任务设置一天构建

    千次阅读 2013-05-09 01:19:47
    每一个hudson任务,都可以配置BuildTriggeers。通过这个配置,来控制构建的频率、时间,触发规则。 其中,如下图所示的Schedule负责...这里主要讲,怎么配置一天构建。 假如我希望每天的4点和6点都做构建,
    每一个hudson任务,都可以配置BuildTriggeers。通过这个配置,来控制构建的频率、时间,触发规则。
    其中,如下图所示的Schedule负责配置构建时间


    如图所示,表示每天的10点02分做构建。这个时间表达式的规则,和linux crontab的时间配置规则,是一样的,这里不赘述。这里主要讲,怎么配置一天多次构建。

    假如我希望每天的4点和6点都做构建,有以下两种写法
    1.


    2.


    特别注意方法1的写法:多个构建时间之间,通过换行符隔开。如果你希望每天的9点10、10点20构建,就只能使用方法1(如下图所示),方法2没办法描述我们想要的这对时间


    展开全文
  • 判断是否为同一天 日期格式化 给日期加上指定时长 得到指定时间节点的Date 1、时间戳转Date 注:以下的方法中很多常量和方法我都没有提取出来,正式项目中还是建议大家封装在时间处理类中,规范化操作 public...

    项目经常涉及到时间戳和Date类型的相互转换、时间类型处理等,我有时候一段时间不写就又忘记了,故而写篇笔记备忘下!

    本文主要包含的有:

    1. 时间戳与Date类型的相互转换
    2. 判断是否为同一天
    3. 日期格式化
    4. 给日期加上指定时长
    5. 得到指定时间节点的Date

    1、时间戳转Date

    注:以下的方法中很多常量和方法我都没有提取出来,正式项目中还是建议大家封装在时间处理类中,规范化操作

    public static void main(String[] args) {
        // 10位的秒级别的时间戳
        long time1 = 1527767665;
        String result1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time1 * 1000));
        System.out.println("10位数的时间戳(秒)--->Date:" + result1);
        Date date1 = new Date(time1*1000);   //对应的就是时间戳对应的Date
        // 13位的秒级别的时间戳
        double time2 = 1515730332000d;
        String result2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time2);
        System.out.println("13位数的时间戳(毫秒)--->Date:" + result2);
    }
    10位数的时间戳(秒)--->Date:2018-05-31 19:54:25
    13位数的时间戳(毫秒)--->Date:2018-01-12 12:12:12

    尤其要注意上面10位的秒级别的时间戳时,不能用int来定义time1变量,否则会得到错误的结果:

    public static void main(String[] args) {
        // 10位的秒级别的时间戳   
        int time1 = 1527767665;   //错误做法
        String result1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time1 * 1000));
        System.out.println("10位数的时间戳(秒)--->Date:" + result1);
    }
    10位数的时间戳(秒)--->Date:1969-12-17 23:21:47

    2、Date转时间戳

    public static void main(String[] args) {
        //获取指定时间的时间戳,除以1000说明得到的是秒级别的时间戳(10位)
        long time = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse("2018-06-30 20:00:00", new ParsePosition(0)).getTime() / 1000;
    
        //获取时间戳
        long now1 = System.currentTimeMillis();
        long now2 = new Date().getTime();
    
        System.out.println("获取指定时间的时间戳:" + time);
        System.out.println("当前时间戳:" +now1);
        System.out.println("当前时间戳:" +now2);
    }
    获取指定时间的时间戳:1530360000
    当前时间戳:1527769494340
    当前时间戳:1527769494340

    3、格式化Date

    public static void main(String[] args) {
        //使用common-lang包下面的DateFormatUtils类
        String format1 = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
        //使用最原始的SimpleDateFormat类
        String format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    
        System.out.println("格式化时间1:" + format1);
        System.out.println("格式化时间2:" + format2);
    }
    格式化时间1:2018-05-31 20:26:49
    格式化时间2:2018-05-31 20:26:49

    DateFormatUtils是commons.lang3.time.DateFormatUtils下的,如果你的项目中没有,maven中引入下:

    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
       <version>3.6</version>
    </dependency>

    4、给日期加上指定时长

    比如,给现在的时间加上12个小时,这个需求也很常见,例如我做过的某个秒杀接口要返回剩余秒杀时间给前端,那么我就直接计算(比如秒杀持续时间为12小时):秒杀(倒计时)截止时间=(当前时间+12H)即可。

    public static void main(String[] args) {
        //将指定日期加上固定时间,DateUtils还有其它添加分钟、小时、月份之类的方法api
        //使用到的是commons-lang包下面的DateUitls类
        Date date = DateUtils.addDays(new Date(), 10);   //
        System.out.println("当前时间为:"+DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
        String format = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
        System.out.println("当前时间加上10天后:" + format);
    }
    当前时间为:2018-05-31 20:31:53
    当前时间加上10天后:2018-06-10 20:31:53

    DateUtils也是commons.lang3.time包下的,别忘了加maven依赖。


    5、得到指定时间节点的日期时间

    方式一:

        public static void main(String[] args) throws ParseException {
            //得到指定日期
            String date = "2018-03-03 15:20:12";
            Date parse = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
            System.out.println(parse);
        }

    方式二:

        /**
         * 获取当天的YYYY-MM-dd 00:00:01 时间点的毫秒级时间戳
         *
         * @return
         */
        public static Long getCurrentBeginDate() {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.HOUR_OF_DAY, 0);//控制时
            cal.set(Calendar.MINUTE, 0);//控制分
            cal.set(Calendar.SECOND, 1);//控制秒
            return cal.getTimeInMillis();
        }

    6、判断两个时间点是否为同一天、同一年

    给定两个日期,快速判断两者是否为同一天或者同一年,比如我做过的一个接口需求是:每人每天有一次抽奖机会,那么当用户当天第二次发送请求时候,我就得判断查询参与记录,并且判断最新一次参与时间和当天是否为同一天。

        /**
         * 判断是否为同一天:使用commons-lang包下的DateUtils类
         *
         * @param day1
         * @param day2
         * @return
         */
        public boolean isSameDay(Date day1, Date day2) {
            return DateUtils.isSameDay(day1, day2);
        }
    
        /**
         * 判断是否为同一天:使用joda依赖包里的时间类,效率从一定程度上优于DateUtils.isSameDay()方法
         *
         * @param date1
         * @param date2
         * @return
         */
        public static boolean isSameDay1(Date date1,Date date2){
            if(date1==null || date2==null){
                throw new IllegalArgumentException("date must be not null");
            }
            LocalDate localDate1 = new LocalDate(new DateTime(date1.getTime()));
            LocalDate localDate2 = new LocalDate(new DateTime(date2.getTime()));
            return localDate1.equals(localDate2);
        }

    基本上涉及到时间的处理就这么多了,希望对你有参考帮助!


    books 引申阅读: 使用quartz实现高级定制化定时任务(包含管理界面)

    books 推荐阅读:elastic search搜索引擎实战demo:https://github.com/simonsfan/springboot-quartz-demo,分支:feature_es

    展开全文
  • 时分秒针在一天之内重合多少

    千次阅读 2016-08-26 14:54:09
    时分秒针在一天之内重合多少?(24小时),时针与分针又重合了多少? 【解题思路】 看完题目,我首先联想到的是初中物理经常要我们做的一道题目:小明和小李的速率分别是V1、V2,二者绕着圆形跑道同时出发,问...
  • 前几查看network请求时意外发现本地环境跑公司项目的时候,每次POST之前,都偷偷给我来一次没有返回的OPTIONS请求。 询问了大佬、查了资料。原来在 CORS-跨域资源共享 中,可以使用 OPTIONS 方法发起个 ...
  • 上次看到一个问题:如何用Redis实现只允许一个用户一天内登录五。 想到Redis中可以给string设置过期时间,所以我们可以利用这个特性来实现。 作为一个java程序猿,我们使用Jedis,具体使用到的API是: /** * ...
  • 前一段时间,线上服务器的FullGC非常频繁,平均一天40多,而且隔几天就有服务器自动重启了,这表明的服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。未调优前的服务器GC数据,FullGC...
  • 重启后提示消息中包含 GPUPanic.cpp:127google了一下,可能是显卡的问题,macbook 15 2010年版本,机器里面有个显卡,个是integrated Intel显卡,个是NVIDA显卡,mac os在切换显卡的过程中可能产生保护性重启...
  • 创建守护进程为什么要fork两次

    千次阅读 2017-06-19 17:12:27
    1、守护进程的概念与特点 2、创建守护进程 3、创建守护进程为什么需要fork两次
  • 因为一天内实际上是钟表走了圈。 即AM与PM。 所以只算AM,再将之乘上2即可。 实际上这是一个圆周内的追击问题。 分针比时针快,分针不停的去追时针。 分针每分钟走6度,时针每分钟走0.5度。 则将12...
  • 想实现一台电脑或者手机一天只能投票一,即使更换了路由器IP地址。 准备从mac地址下手,后来发现MAC地址的获取很麻烦,而且IE会提示安装插件。。 后来想起来去年一个朋友找我拉票的网站,就是实现了类似的功能,...
  • 2019梯赛+第一次面试总结

    千次阅读 多人点赞 2019-04-08 17:39:43
    开始前 因为是在东北大学比,离学校有点远,故前一天就火车到沈阳酒店去了。...说实话天梯赛我没怎么准备…也许做了一两次笔试+复习之前写过的一些题目就叫准备了(嗯??) 比赛当天早早起床了,集合去东大校内...
  • SELECT GET .daytime, GET.data AS GET, xh.data AS xh FROM ( SELECT daytime, SUM ( get_sum ) AS data FROM yuanbao_get GROUP BY daytime ORDER BY daytime ) AS GET, ( SELECT daytime, SUM (...
  • java 怎么样让代码一天就执行一,根据时间来判断,前提 不能使用任务调度,因为在前端这个页面每三分钟刷新一,访问的jsp其中有些方法不需要执行,这些方法一天执行一就可以
  • 【IOS游戏开发】之 一年两次加速审核机会

    万次阅读 热门讨论 2013-12-14 12:58:32
    1. 有时我们已发布的应用会出现点小毛病,或者我们就想快速的通过个新版本,我们想快速的通过审核。 可以提交加急更新申请:https://developer.apple.com/appstore/contact/appreviewteam/index.html 提交加急...
  • 今天在做个项目的时候用到了Spring的定时计划任务。这是Spring的特色功能,可以根据设置在特定的时间或间隔时间做特定的事。 下面给出个例子: package net.csdn.blog.chaijunkukn; import java.text....
  • 一天之内有多少时针分针秒针回重合?分别是什么时候,说出计算方法。 学C#前后不到一个月 今天去面试第一个题目就是这个 不评最佳答案,看重处理方式 纯为交流 更多 分享到: 相关主题推荐: 面试 c# 相关...
  • Android studio中的一次编译报错’Error:Execution failed for task ':app:transformClassesWithDexForDebug‘,困扰了两天
  • 在Application中开启了个子线程,但是每次子线程都会执行两次,非常郁闷。 这时候看它执行两次的时候就去验证他的大方法是否执行了两次,然后发现线程创建了两次; 再看他的大方法执行了几次,它的大方法就是...
  • //给个对象绑定个事件处理函数的第种形式 //document.onclick = fn1; function fn1(){ alert(1); } function fn2(){ alert(2); } //给个元素绑定事件函数的第二种形式: //给个对象的同个...
  • java登录程序用户密码5分钟内输错3锁定用户账号一天的实现 oracle 触发器 序列 MVC Struts 用户管理 密码锁定
  • 这个春招估计也要介绍了吧,自己投的公司也不多吧,投简历的时候,如果你提前批和正常网申都投的话,可能会获得两次笔试/面试的机会,我投了两次腾讯,不过,两次都在二面挂了,特别...
  • 我很久以前就看过三次握手和四次挥手的博客,但根本没懂,直到最近为了面试再看,也是仅仅知道过程,至于面试中的为什么需要三次握手,而不是四次或两次?,网上的博客千千万,国内外的,我还是一直没有理解,知道今天看了学校...
  • Unity 判断两次时间间隔

    千次阅读 2017-08-08 17:28:20
    //储存第一次的时间 public void SetDateTime() { //使用了PlayerPrefs 获取的时候一样 PlayerPrefs.SetString("SetTime", DateTime.Now.ToShortTimeString()); }
  • 自从程序写到提交查询表单到servlet导出excel这段后,基本被卡住了,不知道为什么总是老自动提交两次表单,而且第二次提交的表单默认的情况下传过去的是空值,也就是你自己选择的条件无效。这点差点让我
  • 小弟和女朋友今年都是初入程序行业,公司都是自己通过招聘网站找的,我公司还好,中型企业,作息规律,但是女朋友那是个小公司,经常加班啊,这两天更是到23点24点,第二天九点还要到公司上班,八点多就要起床,我...
  • 你让一些人为你工作了七天,你要用一根金条作为报酬。...把金条分成三段(就是分两次,或者切两刀),分别是整根金条的1/7、2/7 4/7 第一天:给1/7的, 第二天:给2/7的,收回1/7的 第三天,给1/7的
  • 想实现的功能是网站访问次数(一个ip一天只算访问一,服务器重启后访问次数依然存在)。 我的思路如下:  创建一个requestListener,当有请求访问项目的时候获得对应的ip,从数据库中查找当天相同的ip是否访问过, ...
  • 微信公众平台网页授权两次或多次重定响应问题 前几公司一直有我负责开发和维护的公众号突然出现在微信登陆时出现了多次的循环登陆让我感到了不解,我立刻带着不解和好奇进入了后台的调试…。之后我发现了个奇怪...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 891,187
精华内容 356,474
关键字:

一天两次