这个问题已经过去好些天了,当时为了上一个教师节的专题,里面有一个点赞的功能需要用到cookie存储记录。一开始自己写没注意,只知道运营说一天只能点赞一次,后来他们又说要当天24点之后就又可以在点赞,当然啦,这需求改的挺好的。检查的时候发现,尼玛之前写的cookie过期时间都到2025年去了,吓得一身冷汗。是我错了,把天当毫秒用了。

JS cookie 代码,直接声明一个对象就可以用了。

var cookie = {"setCookie": function (name, val, lifeCircle) {//name传入的键名  val传入的键值  lifeCircle cookie生命周期(过期时间=cookie的设置时间+lifeCircle)var oDate = new Date();//时间对象oDate.setDate(new Date().getDate() + lifeCircle);document.cookie = name + "=" + val + ";expires=" + oDate + ";path=/";},"getCookie": function (name) {//name 为想要取到的键值的键名var reg = /\s/g;var result = document.cookie.replace(reg, "");var resultArr = result.split(";");for (var i = 0; i < resultArr.length; i++) {var nameArr = resultArr[i].split("=");if (nameArr[0] == name) {return nameArr[1];}}},"removeCookie": function (name) {//name为想要删除的Cookie的键名var oDate = new Date();//时间对象oDate.setDate(new Date().getDate() - 1);document.cookie = name + "=123;expires=" + oDate + ";path=/";}
}

注意:这里的lifeCircle是按天算的。

后来调整到当天24点过期,这中间有两个问题可以注意一下。

一是谷歌的过期时间格式和其他浏览器不同,会出现北京时间(东八区)8个小时的时差,这不是尴尬了嘛。

二是火狐用firebug看过期时间表达方式我是真一下没反应过来,下午12:00,这还真就是晚上24:00。

好了,看我后来是怎么改好的。

主要思路是当日剩余时间就是生命周期,然后当前时间加上剩余时间转化为日期格式,中间会有一个问题是时间格式问题,国际标准时间,和中国标准(北京)时间是相差8小时的时差的,但是这个问题只有在谷歌上才会有,所以通过浏览器判断即可进行区分。

//自定义cookie对象
var cookie = {"setCookie": function(name, value) {var curDate = new Date();//当前时间戳  var curTamp = curDate.getTime();//当前日期var curDay = curDate.toLocaleDateString();var brow = $.browser;var curWeeHours = 0;if (brow.safari) {//当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态  curWeeHours = new Date(curDay).getTime() + (8 * 60 * 60 * 1000) - 1;} else {curWeeHours = new Date(curDay).getTime() - 1;}//当日已经过去的时间(毫秒)  var passedTamp = curTamp - curWeeHours;//当日剩余时间  var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;var leftTime = new Date();leftTime.setTime(leftTamp + curTamp);//创建cookie  document.cookie = name + "=" + value + ";expires=" + leftTime.toGMTString() + ";path=/";},"getCookie": function(name) {//name 为想要取到的键值的键名var reg = /\s/g;var result = document.cookie.replace(reg, "");var resultArr = result.split(";");for (var i = 0; i < resultArr.length; i++) {var nameArr = resultArr[i].split("=");if (nameArr[0] == name) {return nameArr[1];}}},"removeCookie": function(name) {//name为想要删除的Cookie的键名var oDate = new Date(); //时间对象oDate.setDate(new Date().getDate() - 1);document.cookie = name + "=123;expires=" + oDate + ";path=/";}
}

其实,在h5时代,我们可以换用其他的存储形式了。比如localstorage,sessionstorage等。不过我们的用户要兼容IE7,整天以泪洗面。

JS Cookie当天24点过期,chrome时差问题相关推荐

  1. 原生js cookie的使用实例setCookie()、getCookie()方法

    01 <html> 02 <head> 03 <title>原生js cookie的使用实例setCookie().getCookie()方法</title& ...

  2. js 获取当天时间,实现展示包含今天的一周时间的方法

    js 获取当天时间,实现展示包含今天的一周时间 封装获得第n天的时间数据 循环得到未来n天的时间数据 最近写了一个关于需要时间预约的项目,记录一下如何 实现未来一周数据的处理,时间的展示 封装获得第n ...

  3. js获取当天0时刻,23点59分59秒的时间戳

    获取某一段时间数组 比如['2018-10-11','2018-10-12','2018-10-13','2018-10-14'] getTimeb(num) {var timeArry = [];v ...

  4. 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间

    预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...

  5. JS获取当天零点或23:59:59的时间

    JS获取当天(或某一条)零点的方法还是比较多,但是很多方法并不能支持所有设备(或系统),这里我以获取当天零点为例. // 方法一: let mytime = new Date(new Date(new ...

  6. 原生js cookie本地存储

    JS cookie 1.概述 cookie也叫HTTP Cookie,最初是客户端与服务器端进行会话(Session)使用的. 如果没写expires,那么下次打开网页,cookie就会消失,这个就是 ...

  7. JS And Vue代码调试——IDEA+JS+vue-devtools-dev+JetBrains IDE Support(Chrome插件)

    JS代码调试--IDEA+JavaScript Debug+JetBrains IDE Support(Chrome插件) 问题描述 解决方案 解决步骤 问题描述 调试JavaScript代码,前端框 ...

  8. js 设置cookie一天内过期(包含24小时与一个自然日)

    1. 设置cookie24小时过期 ·设置cookie与获取cookie // 获取cookie export function getCookie(Name) {var findcookie = N ...

  9. js获取当天0点和24点的时间戳

    let startTime1 = new Date(new Date(new Date().toLocaleDateString()).getTime()); // 当天0点 let endTime1 ...

最新文章

  1. CloudComparer点云处理软件
  2. 高并发场景下缓存的常见问题
  3. Deepmind AlphaStar 如何战胜人类职业玩家【中科院自动化所深度解析】
  4. blockhouses
  5. externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目
  6. Jexus vs IIS8 非绝对客观对比测试
  7. Android基于TCP的局域网聊天通信
  8. python0不能做除数、怎么解决_为什么不能用 0 做除数?
  9. git学习(七)新建远程仓库-Gitee为例
  10. Android 开发 Camera2开发_3_处理预览和拍照偏暗问题
  11. Python爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
  12. 计算机专业的毕设,计算机专业毕设业计要求.doc
  13. matlab2010b和7.0,Matlab的安装(以matlab2010b和matlab7.0的安装方法为例)
  14. Macbook pro通过蓝牙连接BlackBerry拨号上网
  15. rk3288 安卓7.1显示正确的ICCID值
  16. ABP 部署遇到的问题(记录)
  17. 12万字零碳智慧校园数字化节能监管管控平台建设方案2022
  18. Win7从文件服务器复制文件速度慢问题处理
  19. 软件项目管理——项目三角形
  20. 首席新媒体运营商学院创始人黎想:裂变底层逻辑,刷屏的3个方法!

热门文章

  1. 谷粒商城--整合Elasticsearch和商品的上架
  2. 武汉Scratch青少儿趣味编程公开课,强势来袭!
  3. 2022最新微软MOS认证考试报名备考攻略
  4. 目前华为手机有哪几款是鸿蒙系统,可升级鸿蒙系统机型曝光 华为手机优先 看看有你的手机吗?...
  5. 机器学习算法_明确解释:4种机器学习算法
  6. linux中制表符乱码,字符串-转义字符-编码-乱码-格式化
  7. python编程基础:快速微服务框架指南:flask:1: 简介与Hello World
  8. amd python mkl_安装numpy+mkl
  9. vue项目在ie、360兼容模式页面显示空白问题
  10. Transformer+BERT 推特文本分类(是否抱怨)