精华内容
下载资源
问答
  • 判断是否同一天 日期格式化 给日期加上指定时长 得到指定时间节点的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

    展开全文
  • 首先需要新建个store文件夹,新建index.js 、 main.js中引入store 将状态信息保存至localStorage中 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const key = 'user' const isLogin = '...

    首先需要新建一个store文件夹,新建index.js   、 

    main.js中引入store

    将状态信息保存至localStorage中

    import Vue from 'vue'
    import Vuex from 'vuex'
     
    Vue.use(Vuex)
    const key = 'user'
    const isLogin = 'isLogin'
    const store = new Vuex.Store({
      state () {
        return {
          user: null,
          isLogin: '0'
        }
      },
      getters: {
        getStorage: function (state) {
          if (!state.user) {
            state.user = JSON.parse(localStorage.getItem(key))
            state.isLogin = localStorage.getItem(isLogin)
          }
          return state.user
        }
      },
      mutations: {
        $_setLogin (state, value) {
          state.isLogin = value
          localStorage.setItem(isLogin, value)
        },
        $_setStorage (state, value) {
          state.user = value
          localStorage.setItem(key, JSON.stringify(value))
        },
        $_removeStorage (state) {
          state.user = null
          localStorage.removeItem(key)
        }
      }
    })
     
    export default store

    然后在main.js

    router.beforeEach((to, from, next) => {
      if (to.matched.some(m => m.meta.auth)) {
        if (window.localStorage.isLogin === '1') {
          next()
        } else if (to.path !== '/') {
          next({path: '/login'})
          Vue.prototype.$message.warning('检测到您还未登录,请登录后操作!')
        }
      } else {
        next()
      }
    })

    在组件中表单验证成功后,点击按钮时:

    this.$message({
      message: '登录成功',
      type: 'success'
    })
    this.$store.commit('$_setStorage', {user: this.loginForm.username})
    this.$store.commit('$_setLogin', '1')
    this.$router.push({name: 'Home'})

    前提是需要在router中添加meta: {auth: true}

    {
        path: '/',
        component: Login,
        name: 'Login',
        meta: {auth: true}
    },

    转载自:https://blog.csdn.net/qq_32917123/article/details/80898439?utm_source=copy

    展开全文
  • 判断两个时间是不是同一天

    千次阅读 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)就好了。



    展开全文
  • 小程序如果每次使用都需要用户登录势必会使用户体验感降低,如何进行判断用户是否登录了,很简单,只要调用个API就行了 小程序登录后的第个page中的index.js文件的onLoad方法中加上如下代码 var that = this ...

    小程序登录与否判断

    小程序如果每次使用都需要用户登录势必会使用户体验感降低,如何进行判断用户是否登录了,很简单,只要调用一个API就行了
    在小程序登录后的第一个page中的index.js文件的onLoad方法中加上如下代码

    var that = this
        wx.getSetting({
          success(res) {
            console.log(res.authSetting)
            if (res.authSetting['scope.userInfo'])  //此处判断是否登录
            {
              wx.getUserInfo({
                //箭头调用法
                success: (data) => {
                  console.log(data);
                  app.globalData.userInfo = data.userInfo  //全局变量赋值
                  app.globalData.haveauth = true
                  
                }
              })
              
            }
          }
        })
    

    现在的小程序为了使用户体验良好,新版本已不再支持进入小程序直接需要用户登录了,所以这个方法有必要学习一下。

    展开全文
  • 、描述 1、数据库中有个date类型的last_login_time字段,即用户每次登录都会更新该字段; ...2、在登录时使用...3、获取系统当前时间,并用DateFormat格式化,比较两个时间是否相等就可以判断用户
  • Java web工程判断用户是否重复登录

    万次阅读 2013-03-26 10:55:15
    前几,网上找了些朋友的资料,做了个小功能,验证用户是否重复登录。 原理就是:每用户登录前有个验证,当第登录时,会把其session信息,添加到个特定的静态变量中。当第二次登录时,验证到静态...
  • 具体思路: 数据库中有个datet
  • 这样做也行,但是如果网站页面很多,就是不停的ctrl + c,ctrl+v估计也要很久,再假设如果有一天判断条件改变了呢,是否要一一修改?下面说一个方法: 首先定义一个BasePage类,里面负责写判断用户身份登录的代码,...
  • 微信小程序用户授权,以及判断登录是否过期

    万次阅读 多人点赞 2018-10-04 22:07:41
    判断用户是否过期(如果未过期则重新登录): 获取用户信息: 获取用户的信息并前台显示: 主要实现两个功能: ①判断登录是否过期,如果过期则就重新登录,如果没过期就提示未过期 ②获取用户的信息...
  • 首先这里先给出一个大致的思路,就是首先我们的保存一个最后退出的时间,然后每次app进入的时候再拿到我们之前保存退出的时间,和当前的时间进行对比,如果相同则是同一天登录,反之。思路理清了,剩下的就是填空...
  •  小x向我反应用户在我开发的系统中,其中个功能上待了很长时间,当用户跳转到其他界面上时,突然就掉线了。  他告诉我应当在用户每次向后台索取数据的时候进行用户登录状态的检验。  用户登录状态其实是...
  • android用SP,判断是否过了一天

    千次阅读 2015-08-10 17:42:16
    思路:打开的时候缓存个时间,如果当前的时间比保存的时间大,就是第二。 PS:用sp会有个漏洞,如果客户把缓存清理了,再打开,还是会执行第二的事件,或者用户改了android的系统时间,也一样。 如果是要...
  • 找出 今天 登录的所有用户。。 loginTab uid loginTime logouttime …… 我一般是将时间截取年月日 ,然后和表里面的字段接渠道年月日再比较 如 where logintime = convert(char(10),createdate,111) ...
  • 今天完善项目时遇到了个问题:我加入了个页面:评论。但又不想让直接跳转,于是,我加了个“中转页面”——登录注册。 可是测试的时候问题来了:这个页面并不能总是达到我想要的效果, 我使用 vue 写的,...
  • 如何判断用户是否访问过某个网址

    千次阅读 2016-12-10 13:27:24
    如何判断用户是否访问过某个网址 我们经常有这样的需求:想知道用户之前有没有访问过某个网址。有没有什么方法或技术能实现这一点呢? 初步探索 注意到,大部分浏览器默认设置里,用户访问过的链接和没...
  • 判断日期是否在7之内

    千次阅读 2017-10-28 16:51:42
    比较当前的时间和7或者n的大小关系 Date date = new Date(); //获取当前时间  Date s00 = (Date) pageData.get("addTime"); //获取需要比较的目标时间  
  • 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
  • 练习题题目:输入某年某月某日,判断一天是这一年的第几天?(Python)
  • 输入年月日,判断一天是这一年的第几天?(10分) 题目内容: 给定年月日,如2019/1/8,打印输出这一天是该年的第几天。   输入格式: 共一行,为一个字符串,年月日之间以'/'隔开,如2019/1/8。   输出...
  • java登录程序用户密码5分钟内输错3次锁定用户账号一天的实现 oracle 触发器 序列 MVC Struts 用户管理 密码锁定
  • h5浏览器中无法判断用户是否安装某个app,只是如果用户安装了这个APP调起app的时候,会使页面失去焦点 微信里无法调起app,所以微信里添加个提示让用户在浏览器里打开。 $(".goBuy").click(function(){/...
  • 平常解决方法是onLaunch生命周期里面判断用户是否登录 但是有个不好的体验就是每次进入程序先进入设定的第个页面 进入首页 这样体验不是很好~ 2.解决 文档地址:...
  • 设计签到功能时,我们往往要判断用户当天是否已经进行签到,如果有些业务需求要求记录连续签到的次数或者天数,这时候我们就要知道用户最后次签到的时间是前天往前还是昨天往后,下面是我自己写的判断的...
  • App开发,肯定会遇到需要判断是否登录,未登录即跳转到登录页的问题,其实ionic ionic2中都很容易解决:
  • 这里给出个简单的解决方案:处理登录的login方法中,先查询数据库验证下该用户是否存在,如果存在 判断登录账户是否已经锁定了, 然后从application内置作用域对象中取出所有的登录信息,查看该username账户...
  • 如果一个新用户注册,如何判断是否已被注册... 一段时间(比如一天,可以凌晨1~3点低峰时间段),利用归并排序(其实就是分治思想)将两个数据库归并。 不知道我的想法是否正确,实际中如何判断,先谢谢各位了。
  • 输入日期,判断一天是这一年的第几天。 【分析】 根据题意,计算时之前,我们首先应该先判断输入的年份是闰年还是平年(如果日期小于2月份就没有必要判断了)。闰年为366天,平年为365天。 确定是闰年还是...
  • 登录网站后要保持用户登录状态。前台用的vue,后台用的java。怎么保持和验证用户登录状态, 目前想到的做法是登录后将用户信息存入session。然后访问每个接口都会做个拦截 获取请求过来的session,...
  • 判断某一年是否为闰年

    万次阅读 2018-01-08 13:11:51
    本实例通过程序计算用户输入的年份是否为闰年。 二.关键技术: 1.本实例计算闰年的关键技术是公式。满足以下两个条件的整数才可以称为闰年: (1)能被4整除但不能被100整除; (2)能被400整除; 2.该公式用...
  • 1.如何判断mysql主从是否同步?该如何使其同步? 1 2 3 Slave_IO_Running Slave_SQL_Running; 略 2.mysql的innodb如何定位锁问题,mysql如何减少主从复制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 220,130
精华内容 88,052
关键字:

判断用户是否在同一天登录