2019年12月的第一个bug
现在是2019年12月1日0点27分,我的心情依旧难以平静。这个月是2019年的最后一个月,是21世纪10年代的最后一个月,也是第一批90后30岁以前的最后一个月。就是在这个月的第一天的0点0分,我写的代码出了一个bug,简直让我欲哭无泪。
事情是这样的,我们公司在双十一搞了个促销活动,时间是11月1日到12月1日0点整。为了保证在2019-12-01 0点时,所有小程序上双十一相关的UI元素准时下架,我写下了如下代码:
// 查出12月1日的时间戳
new Date('2019-12-01').getTime() //或Date.parse('2019-12-01') 1575158400000
const isS11 = Date.now() < 1575158400000
一切的UI元素都将根据这个isS11
这个布尔值进行显示和隐藏。我提前把逻辑写好之后,早早就发布到线上。周五运营的同事问起时还得到我信誓旦旦的保证,我说,肯定没问题,我都安排好了,0点保证下架。
0点的钟声敲响了。老板在群里发了红包,我抢过了之后,打开小程序,看看双十一是不是下线了。意外还是出乎意料的发生了,元素还在!!我有点慌了起来,又尝试了刷新和重新打开小程序,双十一依然还在,纹丝不动。我就觉得脸有点火辣辣的——打脸了!
我马上打开vscode,查找原因,在控制台写下下面的代码:
纳尼?为什么是早上8点???不应该是默认0点吗?不管了,先改正再说,于是加上时分秒:
const isS11 = Date.now() < Date.parse('2019-12-01 00:00')
这回正常了。赶紧紧急提交一个版本先~提交完之后开始翻TC39的规范:终于在这里找到了解释。当Date构造函数接受一个字符串作为参数时,会调用Date.parse来得到时间戳。而在Date.parse中有这么一段话:
When the UTC offset representation is absent, date-only forms are interpreted as a UTC time and date-time forms are interpreted as a local time.
翻译过来就是:当字符串中没有UTC的标记时,只有日期的字符串会被当成UTC时间来解析,有日期和时间的字符串会被当成本地时间来解析。
new Date('2019-12-01') //按UTC0时区的时间0点,相当于北京时间早上8点
new Date('2019-12-01 00:00') //按北京时间0点
我们是东八区,比UTC时间快8个小时。我输入的字符串是2019-12-01
被当成UTC时间的12月1日0点,所以换成本地时间是12月1日8点。。。
最后,首先吐槽一下TC39制定规范的大佬们,为什么不能都按本地时间来解析呢?不然我也不会掉到坑里。。不过,好在微信加急审核效率高,只用半个小时就审核通过(这里给微信点个赞
2019年12月的第一个bug的更多相关文章
- 日常Git使用——2019年12月11日16:19:03
1.git介绍 1.1 什么是git? 什么是Git? 比如一个项目,两个人同时参与开发,那么就把这个项目放在一个公共的地方,需要的时候都可以去获取,有什么改动,都可以进行提交. 为了做到这一点,就需 ...
- AHKManager.ahk AHK管理器 2019年12月15日
AHKManager.ahk AHK管理器 2019年12月15日 快捷键 {Alt} + {F1} ///////////////////////////////////////////// ...
- 34.ITerm配置使用——2019年12月24日
2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...
- 36.React基础介绍——2019年12月24日
2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...
- 35.ES6语法介绍——2019年12月24日
2019年12月24日16:22:24 2019年10月09日12:04:44 1. ES6介绍 1.1 新的 Javascript 语法标准 --2015年6月正式发布 --使用babel语法转换器 ...
- 24.mongodb可视化工具部署——2019年12月19日
2019年10月09日17:05:54 教程链接:https://blog.csdn.net/qq_32340877/article/details/79142129 项目名:adminMongo g ...
- 22.Express框架——2019年12月19日
2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...
- 20.Nodejs基础知识(上)——2019年12月16日
2019年12月16日18:58:55 2019年10月04日12:20:59 1. nodejs简介 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触 ...
- 19.go语言基础学习(下)——2019年12月16日
2019年12月16日16:57:04 5.接口 2019年11月01日15:56:09 5.1 duck typing 1. 2. 接口 3.介绍 Go 语言的接口设计是非侵入式的,接口编写者无须知 ...
随机推荐
- Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...
- 从未被Google过 #NerverBeenGoogled
我相信大家都用Google搜索互联网上的东西,Google会跟踪你搜索的所有内容,但是你或许不知道,他们也记录着从未被Google过的内容.我有个清单,这些是有史以来从未被Google过的一些东西1. ...
- mpvue小程序加载不出图片 Failed to load local image resource /images/xx.png
解决方法: 直接写 /static/img/xx.png(一定要从 "/static" 开始,不要写成 "../../static" ,当然static里面也可 ...
- 分母为0的坑(float)
分母不能为0 对于int 类型,如果分母为0,在程序运行时,会报错. 而对于float 类型,如果分母为0,则不会报错,而是会返回一个infinity(无穷大),也就是NAN. 因为除一个无穷小的数, ...
- C++编译错误 --- 成员函数定义在 .h 文件中出现重定义错误(Error LNK 2005)
今天写了一个简单的类,定义在 .h 文件中, 类很简单就将其成员函数定义在了一起(class类后面).运行的时候出现了如下图所示的编译错误(error LNK2005) 查资料,大部分都是说需要加上 ...
- python 函数,模块知识点运用示例
给定验证码长度n,生成随机验证码,验证码由数字.字母组成(参考chr()内置方法) # 给定验证码长度n,生成随机验证码,验证码由数字.字母组成(参考chr()内置方法) # 第33-126号(共94 ...
- vmworkstation pro安装
runtime dll安装程序未能完成安装 解决方法: 1.出现这个问题的时候不要点确定(如果点了确定,会找不到步骤4中的文件夹) 2.win+R调出 '运行' 3.输入%temp%,进入C:\Use ...
- CF13B Letter A
CF13B Letter A 洛谷传送门 题目描述 Little Petya learns how to write. The teacher gave pupils the task to writ ...
- TP5导入EXCEL到数据库
前期准备工作: 1.下载PHPExcel放到vendor下 2.前端页面: <form action="save" method="post" encty ...
- mysql使用记录
1. 报错 10061 将mysql启动即可