收藏
回答

小程序获取日期new Date(),居然是昨天的日期,BUG?

框架类型 问题类型 终端类型 操作系统 微信版本 基础库版本
小程序 Bug 客户端 Android 6.6.6 1.9.1






/**
* YYYY-MM-dd
*/
function formatDate(date) {
 let year = date.getFullYear()
 let month = date.getMonth() + 1
 let day = date.getDate()
 return [year, month, day].map(formatNumber).join('-');
}
function formatNumber(n) {
 n = n.toString()
 return n[1] ? n : '0' + n
}
//调用
let now = util.formatDate(new Date());

比如今天是2018-06-03,但now结果居然是“2018-06-02”

这种情况在近两个月内,发生过两次了,均是华为手机,且把小程序从“发现”页删除,重新扫描打开就好了

还有一种现象是,出现问题的手机,下午获取的日期就又正确了,早上是错的。

什么原因?难道是代码问题?不可能是new Date()返回的值不对吧?

由于是客户手机,未知基础库版本,小程序后台限制最低是1.9.1

最后一次编辑于  2018-06-06
回答关注问题邀请回答
收藏

9 个回答

  • 你是人间四月天
    你是人间四月天
    2022-09-21

    我来填一下这个坑 :


    思路就是既然获取日期不对,那么我们就去获取时间戳,然后把时间戳换成日期,曲线操作嘛.

    下面是代码逻辑:

    let timestamp = new Date().getTime();
    let myDate = timeStamp(timestamp); //转换一下时间戳
    



    const timeStamp =(value)=>{
        let date = new Date(value); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
        let year = date.getFullYear();
        let month = ("0" + (date.getMonth() + 1)).slice(-2);
        let sdate = ("0" + date.getDate()).slice(-2);
        let hour = ("0" + date.getHours()).slice(-2);
        let minute = ("0" + date.getMinutes()).slice(-2);
        let second = ("0" + date.getSeconds()).slice(-2);
        // 拼接
        let result = year + "-" + month + "-" + sdate;
        //let result = month + "." + sdate //+ ":" + second;
        // 返回
        return result;
    }
    


    2022-09-21
    有用 1
    回复
  • 意外金喜
    意外金喜
    2018-06-06

    呵呵呵,你明天看,会发现是前天的时间.

    2018-06-06
    有用 1
    回复 1
    • jones
      jones
      2018-06-06

      照这个逻辑,后天看应该就会发现忍者神龟了

      2018-06-06
      回复
  • 冯恒智
    冯恒智
    2018-06-05

    时区问题,就比如你那个“2018-06-02”不是北京时间,是+0的时间

    2018-06-05
    有用 1
    回复 7
    • jones
      jones
      2018-06-05

      很有可能,准备找客户确认下,如果是时区问题就好说了

      2018-06-05
      回复
    • jones
      jones
      2018-06-05

      突然想到,如果是时区问题,为什么删除小程序,重新添加就好了?

      2018-06-05
      回复
    • WEN
      WEN
      2018-06-05回复jones

      这个问题以前在PC上遇到过。貌似是浏览器的时区出错了。重启一下就行了。小程序也是用浏览器运行的,估计底层问题一样吧。

      2018-06-05
      1
      回复
    • jones
      jones
      2018-06-05回复WEN

      最好是用户自己设置错了时区,还好说,如果是微信时区偶尔会错,那就必须得服务器返回时间了

      2018-06-05
      回复
    • logic
      logic
      2018-06-05

      看下是不是相差8小时整

      2018-06-05
      回复
    查看更多(2)
  • ㅤ
    2020-07-02

    解决了吗楼主,我也遇到也是华为手机 小程序根据时间请求数据第二天请求还是昨天数据,重新进入打开就没事了

    2020-07-02
    有用
    回复
  • 多伦多
    多伦多
    2018-06-05

    我也写了个时间过滤器,在开发者工具上查看时间处理正确,在手机预览时错误。。。。


    2018-06-05
    有用
    回复 4
    • jones
      jones
      2018-06-05

      贴个代码看看

      2018-06-05
      回复
    • 多伦多
      多伦多
      2018-06-05回复多伦多


      我的问题已经解决,正如楼下 @人生若只如初见  说的, ios 下不识别 2018-06-05 19:01:10 时间格式,我又过滤了一遍改成 2018/06/05 19:01:10 ,在 ios 下问题解决!


      2018-06-05
      1
      回复
    • Ethan
      Ethan
      2018-06-05回复多伦多

      经过测试android和ios均采用2018/06/05 19:01:10这种格式即可做到兼容。

      2018-06-05
      4
      回复
    • jones
      jones
      2018-06-05回复Ethan

      2018-06-05
      回复
  • jones
    jones
    2018-06-05

    趁着这贴子看的人多,再发个最近碰到的奇怪plus+问题贴

    在社区已沉的帖子地址,点这里

    2018-06-05
    有用
    回复
  • 树下有只猫
    树下有只猫
    2018-06-05

    手机系统时间调过没

    2018-06-05
    有用
    回复 1
    • jones
      jones
      2018-06-05

      没有,手机系统显示的时间都是对的

      2018-06-05
      回复
  • 不冷不热
    不冷不热
    2018-06-04

    为什么不是后台返回时间?前台的时间可以夏季吧改

    2018-06-04
    有用
    回复 1
    • jones
      jones
      2018-06-05

      正在考虑中,没想到会遇到这种问题。。。

      2018-06-05
      回复
  • 人生若只如初见
    人生若只如初见
    2018-06-04

    华为 还有这个问题么......

    2018-06-04
    有用
    回复 5
    • jones
      jones
      2018-06-05

      两个都是华为手机P9,不知道是不是巧合

      2018-06-05
      回复
    • 人生若只如初见
      人生若只如初见
      2018-06-05

      这个问题 我不清楚  不过 你不做ios 的兼容么  ios 不是不识别 2018-06-05 这样格式的么   要改成2018/06/05这样的?

      2018-06-05
      1
      回复
    • jones
      jones
      2018-06-05回复人生若只如初见

      日期是通过new Date()获取,然后程序拼接,只是显示用

      两个月前发现此问题了,就一个用户,没当回事,结果出现了第二个用户。。。

      2018-06-05
      回复
    • 人生若只如初见
      人生若只如初见
      2018-06-05

      上面那个 老兄说的 其实可以考虑  让后台 返回时间  这样 这个问题 应该就不会出现了

      2018-06-05
      1
      回复
    • 多伦多
      多伦多
      2018-06-05回复人生若只如初见

      还有这种事。。。。。。

      2018-06-05
      回复
登录 后发表内容