uni-app 云函数的时区问题 什么时候可以解决一下 new Date()现在是+0的时区

uni-app 云函数的时区问题 什么时候可以解决一下 new Date()现在是+0的时区

操作步骤:

  • 在云函数里面打印一下时间就可以

预期结果:

  • 北京+8时区,或者可以提供一个方法,设置时区和格式化的

实际结果:

  • 北京+8时区,或者可以提供一个方法,设置时区和格式化的

bug描述:

  • 【报Bug】云函数的时区问题,什么时候可以解决一下,new Date()现在是+0的时区
11 回复

本地调试是本地的时间,传到云函数,时区就不对了

更多关于uni-app 云函数的时区问题 什么时候可以解决一下 new Date()现在是+0的时区的实战教程也可以访问 https://www.itying.com/category-93-b0.html


@DCloud_UNI_WYQ 大佬帮忙看下呗

这不是bug,不要乱报bug,本地的nodejs的new Date(),返回的也是零时区的时间。你电脑上没有安装nodejs吗?你自己在你电脑上试试要死啊?

你但凡能认真读一下描述,或者试一下也不会在这乱咬人,我说的是部署到云上之后的时区问题,麻烦嘴干净一下,另外你家如果有丧事,就先忙着去处理,别在这回帖了好吗?

回复 JerrySirCom: 我说的是不分本地还是云,都是零时区。还没有明白?你是东8区对吧?你在零时区的基础上+个8,很难吗?我服你。

我知道是云函数。

回复 呆狗的一生: 不懂你就自己去试试,uniCloud云端的云函数使用的时区是utc+0,而不是 UTC+8,在云函数中使用时间时需特别注意。云函数在HBuilderX本地运行时,时区则是电脑的时间,不懂就别BB了行吗

回复 呆狗的一生: 别TM不懂装懂到哪都刷存在感,如果没有问题会出现单独的一个库来解决这个问题,脑子有坑吧 https://ext.dcloud.net.cn/plugin?id=3841

为了防止被人乱咬,我贴一个解决方案来证实有这件事存在
https://blog.csdn.net/weixin_43518405/article/details/119829959
也不知道这样还会不会被人乱咬

文档里面也给出了一段代码可以先获取偏移后的Date对象,再获取具体的年月日

在 uni-app 中使用云函数时,new Date() 返回的时间默认是 UTC 时间(即 +0 时区),而不是本地时间。这是因为云函数运行在服务器端,而服务器的时区通常设置为 UTC。

要解决这个问题,你可以手动调整时区,或者使用一些库来处理时区转换。以下是一些解决方案:

1. 手动调整时区

你可以手动将 UTC 时间转换为本地时间。例如,如果你需要将时间转换为北京时间(UTC+8),可以这样做:

const utcDate = new Date(); // 获取 UTC 时间
const localDate = new Date(utcDate.getTime() + 8 * 60 * 60 * 1000); // 转换为北京时间
console.log(localDate);

2. 使用 moment-timezone

moment-timezone 是一个强大的日期处理库,可以方便地处理时区转换。首先,你需要安装这个库:

npm install moment-timezone

然后在你的云函数中使用它:

const moment = require('moment-timezone');

const utcDate = new Date(); // 获取 UTC 时间
const localDate = moment(utcDate).tz('Asia/Shanghai'); // 转换为北京时间
console.log(localDate.format());

3. 使用 date-fns-tz

date-fns-tz 是另一个处理时区的库,它基于 date-fns。首先,安装这个库:

npm install date-fns-tz

然后在你的云函数中使用它:

const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz');

const utcDate = new Date(); // 获取 UTC 时间
const localDate = utcToZonedTime(utcDate, 'Asia/Shanghai'); // 转换为北京时间
console.log(format(localDate, 'yyyy-MM-dd HH:mm:ss', { timeZone: 'Asia/Shanghai' }));

4. 设置云函数的环境变量

如果你有权限设置云函数运行环境的环境变量,可以尝试将服务器的时区设置为本地时区。例如,在 Linux 服务器上,你可以设置 TZ 环境变量:

export TZ=Asia/Shanghai
回到顶部