JS不靠谱系列: 写一个验证过期时间的函数,包含jest单元测试

本文介绍了一个使用JavaScript和TypeScript编写的验证过期时间的函数,包括思路分析、代码实现和Jest单元测试。函数主要判断传入参数是数字时间戳还是字符串日期,并进行有效性验证。文章还提到了TypeScript中日期类型与字符串类型转换的问题,并提供了测试代码和总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我们经常用到的token还是cookie,都默认有一个过期时间

我们做鉴权的时候,很依赖这个,所以捣鼓下能不能再严谨点

因为之前都是以后台固定的格式,直接拿到值做一个简单的判断;

那,假如后台传过来的日期格式变了呢!!有兴趣的瞧瞧。

前置基础

  • jest : 这个测试框架非常不错,Facebook 出品
  • ES5&&ES6
  • Typescript

我们不讲配置,也不讲其他琐碎,只说实现过程

思路分析

重心其实就是围绕传参来执行

  • 判断参数的类型,只考虑两种情况
  • 数字: 验证是否为一个正确的时间戳!!!
  • 字符串: 验证是否是一个datetime格式,亦或者可以转换成识别的格式(比如 2018/08/01)
  • 类型的转换及比较
  • 最后返回布尔值,来确定该值是否有效

效果图

代码实现

代码不多,只涵盖了这么几种情况,具体看测试的文字描述

js 版本

isDate.js , 暴露isDate函数,接收一个参数


function checkDateTime(d) {
   
   
  const _date = new Date(d);
  const Now = new Date().getTime();
  const DiffTime = _date.getTime() - Now;

  if (
    _date.getFullYear() === 1970 ||
    _date.getFullYear() < new Date().getFullYear()
  ) {
   
   
    // 若是传入的时间转换成1970年...那肯定不是我们后台要传的时间
    // 小于这个年份的也必然不是,谁的后台token过期时间超过一年的...
    return false;
  }

  if (DiffTime > 60000) {
   
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值