j***@singoo.cc
j***@singoo.cc
  • 发布:2024-01-22 14:18
  • 更新:2024-04-10 22:50
  • 阅读:665

【报Bug】dayjs的timezone插件使用报错,ReferenceError: Intl is not defined

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.99

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 华为

手机机型: 荣耀7X

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

预期结果:

正常使用

实际结果:

报错

bug描述:

使用dayjs的timezone插件时,app端报错ReferenceError: Intl is not defined,浏览器运行时正常

2024-01-22 14:18 负责人:无 分享
已邀请:
JXWang

JXWang

我试了一下,没有报错,我是这样写的

import dayjs from 'dayjs';  
    import timezone from 'dayjs/plugin/timezone'  
    import utc from 'dayjs/plugin/utc'  

    dayjs.extend(utc);  
    dayjs.extend(timezone);  

    const timestamp = "2014-06-01 12:00"  
    const tz = "America/New_York"  
    const dayjsLocal = dayjs(timestamp);  
    console.log(dayjsLocal.format('YYYY-MM-DD HH:mm:ss'));  
    const dayjsAmerica = dayjsLocal.tz(tz)  
    console.log(dayjsAmerica.format('YYYY-MM-DD HH:mm:ss'));

不同的dayjs版本可能会有差异,可以提供一下您的dayjs版本和测试代码,我这边排查一下

  • j***@singoo.cc (作者)

    dayjs版本是1.11.10。上面的引入注册是一样的,我的代码如下:


      const dealTimeFun = (targetTime, tzVal) => {  
    return new Promise((resolve, reject) => {
    // 处理时区字段
    let getTz = tzVal ? tzVal : Init.cnTimezone;
    // 目标时间的对应所在时区的值
    // let CurrentTime = dayjs(targetTime).tz(getTz);
    let CurrentTime = dayjs.tz(targetTime, getTz);
    // 将目标时间转为北京时间
    let TransCurrentTime = CurrentTime.tz(Init.cnTimezone);
    // 当前时间的一小时一分钟后的时间
    let tzAfterTime = dayjs().add(1, "h").add(2, "m");
    if (TransCurrentTime < tzAfterTime) {
    resolve(false);
    } else {
    resolve(true);
    }
    });
    }

    dayjs(targetTime).tz(getTz)这样写不报错,但是我需要的是let CurrentTime = dayjs.tz(targetTime, getTz);这样直接指定时区的dayjs对象,或者有什么方法能平替dayjs.tz(targetTime, getTz)么

    2024-02-02 14:12

  • j***@singoo.cc (作者)

    回复 j***@singoo.cc: app报错,pc正常

    2024-02-02 14:54

  • JXWang

    回复 j***@singoo.cc: ios是不是也正常

    2024-02-02 15:17

  • j***@singoo.cc (作者)

    回复 JXWang: IOS不报错但是转换出来的时间不对

    2024-02-02 15:29

  • JXWang

    回复 j***@singoo.cc: https://blog.csdn.net/qq_16445551/article/details/89182902 可以参考一下这篇文章

    2024-02-02 15:32

  • twiglau

    回复 j***@singoo.cc: 这个问题解决了吗? 这边也遇到了该问题

    2024-03-09 21:16

  • 2***@qq.com

    回复 twiglau: 已经解决 用 momentjs

    2024-04-11 08:56

2***@qq.com

2***@qq.com

Intl 小程序内部不支持这个标准,建议用momen代替

https://momentjs.cn/docs/#/-project-status/
https://momentjs.com/timezone/docs/

要回复问题请先登录注册