-->
侧边栏壁纸
博主头像
断钩鱼 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 34 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

踩坑记录 - ios js日期格式化问题

halt
2021-10-29 / 0 评论 / 2 点赞 / 1700 阅读 / 0 字

结论:ios 系统中 JavaScript 日期格式不能以 - 分割 要以 / 分割

之前写的cms中登录一直没有测苹果的设备,后来发现无法进行登录,ios,ipados都是,macos没试,没有设备...,都是基于unix的估计也差不多,后来经过调试发现,获取token时无法获取到,但是已经保存了,经过调试发现,因获取token时会预判断过期时间,然而一直时false其他设备时true,最后发现日期转换时NAN 经过面向谷歌编程得到了以上结论

  • 贴下代码

重点就在 Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/')) 加了 .replace(/-/g, '/'))得以解决

const TokenKey = 'accessToken'
const RefreshTokenKey = 'refreshToken'

export function getToken() {
  const token = localStorage.getItem(TokenKey)
  if (token) {
    if (Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/')) > Date.now()) {
      return JSON.parse(token).token
    }
  }
  return undefined
}

export function getRefreshToken() {
  const token = localStorage.getItem(RefreshTokenKey)
  if (token) {
    if (Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/')) > Date.now()) {
      return JSON.parse(token).token
    } else {
      removeToken()
    }
  }
  return undefined
}

export function setToken(token, expiredTime) {
  return localStorage.setItem(TokenKey, JSON.stringify({ token: `token:${token}`, expiredTime: expiredTime }))
}

export function setRefreshToken(refreshToken, expiredTime) {
  return localStorage.setItem(RefreshTokenKey, JSON.stringify({ token: refreshToken, expiredTime: expiredTime }))
}

export function removeToken() {
  localStorage.removeItem(RefreshTokenKey)
  return localStorage.removeItem(TokenKey)
}
2
博主关闭了所有页面的评论