收藏
回答

new Date() 在手机手动设置时区之后不及时生效?

const formatTime = (date, type) => {
  date = date || new Date();
  const Y = date.getFullYear();
  let M = date.getMonth() + 1;
  M = M > 9 ? M : ('0' + M);
  let D = date.getDate();
  D = D > 9 ? D : ('0' + D);
  let h = date.getHours();
  h = h > 9 ? h : ('0' + h);
  let m = date.getMinutes();
  m = m > 9 ? m : ('0' + m);
  let s = date.getSeconds();
  s = s > 9 ? s : ('0' + s);
  // console.log(date.getTimezoneOffset())
  return `${Y}-${M}-${D} ${h}:${m}:${s}`;
};

setInterval(() => {
   console.log(formatTime())
 }, 1000);


在小程序的方法如上:打开小程序时,确实是拿到当前时区的当前时间,但,当我在手机上手动设置别的时区时,小程序打印的时间还是之前时区的当前时间,必须是彻底的关闭小程序,重新打开,才能拿到手动设置好的别的时区的当前时间。这不合理,应该是能时时拿到设置好的时区的当前时间都对,我在h5页面也测试了这个问题(用微信扫一扫扫描h5的网址,然后手动在手机上设置时区),但是完成正常,能时时拿到设置好的时区的当前时间。只有在小程序上会出现这个问题(在开发工具上也正常)

最后一次编辑于  2020-07-24
回答关注问题邀请回答
收藏

3 个回答

  • brave
    brave
    2020-07-24

    写在onShow里执行

    2020-07-24
    有用 1
    回复 2
    • undefined
      undefined
      2020-07-24
      先不说,我是定时执行的,先不可能每次都放在onShow执行,再次,就算放在onShow也是一样,每次获取的都是之前时区的当前时间,而不是改变之后的时间,在开发工具是正常的,但在真机上就有这种情况
      2020-07-24
      回复
    • 丑丑男
      丑丑男
      2021-01-26回复undefined
      是确实有这个情况 到尽头都没修复呢 顺带一提这个问题就安卓上会出现 ios就是随时切换都能时时获取
      2021-01-26
      回复
  • 何故
    何故
    2021-08-10

    巧了我也遇到这个问题了,只能刷新浏览器才行,不然时间就会变化,我想的是监听手机或者电脑时区变更,让其刷新

    2021-08-10
    有用
    回复
  • 灵芝
    灵芝
    2020-07-24

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-07-24
    有用
    回复 2
    • undefined
      undefined
      2020-07-24
      小米8,微信版本号7.0.16,系统版本号10,详细看图片,补充一点,手机手动设置时间,可以在小程序上实时生效,但就是设置时区时不生效,只有彻底的关闭小程序,重新打开才生效,代码片段就是上面的代码块,你复制之后,在vConsole里就可以看到打印信息
      2020-07-24
      回复
    • undefined
      undefined
      2020-08-11
      有结果了吗
      2020-08-11
      回复
登录 后发表内容
问题标签