找回密码
 立即注册

QQ登录

只需一步,快速开始

mm-bzu
金牌服务用户   /  发表于:2023-12-5 13:35  /   查看:3217  /  回复:7
1金币

我们通过表达式去访问接口,接口返回的属性value,value的类型为dynamic,当value返回的值是日期类型(utc)的时候,怎么让value显示为本地时间
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

抱歉,16暂时不支持这个功能,那这个可能就暂时没有办法,16确实没有办法直接实现。 您可以尝试升级17,使用自定义函数。 或者在自己的数据里把协调时作为一个新的字段,然后实际时间等于 UTC时间+协调时。

7 个回复

正序浏览
mm-bzu
金牌服务用户   /  发表于:2023-12-6 08:49:59
7#
Felix.Li 发表于 2023-12-5 17:52
那这个确实没有现成的方法,不过您可以尝试写自定义函数:

https://gcdn.grapecity.com.cn/showtopic-170 ...

我们这边用的是ActiveReports 16,支持自定义函数吗
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-12-5 17:52:01
6#
那这个确实没有现成的方法,不过您可以尝试写自定义函数:

https://gcdn.grapecity.com.cn/showtopic-170979-1-1.html
可以参考这个实现一个自定义函数,然后转化时间为当地时间的。然后就可以在报表中使用
回复 使用道具 举报
mm-bzu
金牌服务用户   /  发表于:2023-12-5 17:10:41
5#
Felix.Li 发表于 2023-12-5 16:53
如果是直接是UTC时间,也是可以转换的,因为我们是在原始时间上加了8个小时。

所以首先确保原始字段是时 ...

我们项目可能在外国使用,所以+8h是不准确的,没有直接能够转本地时间的函数吗
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-12-5 16:53:29
4#
如果是直接是UTC时间,也是可以转换的,因为我们是在原始时间上加了8个小时。

所以首先确保原始字段是时间类型
如果不是,可以先使用ToDateTime()表达式转化成时间类型
其次,您可以在这个字段基础上,用{DateAdd}函数,这个函数可以在原始时间的基础上增加或者减少时间。
那咱们就可以写成这种:
{DateAdd("h", 8, 时间字段)}
也就是在时间字段的基础上,加8个小时,就是我们现在的时间了
回复 使用道具 举报
mm-bzu
金牌服务用户   /  发表于:2023-12-5 16:33:41
3#
Eden.Sun 发表于 2023-12-5 16:09
问题描述:返回的数据,如果是日期就按照日期格式显示,如果不是日期,就显示原始值。

我们返回的时间是UTC时间,需要先转换成本地时间,再去format。转本地时间有函数可以实现吗
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-12-5 16:09:41
2#
问题描述:返回的数据,如果是日期就按照日期格式显示,如果不是日期,就显示原始值。


问题解决:
您好,我理解您的意思是,返回的  value 字段值是一个不确定的,值可能是一个日期,可能是一个字符串,
如果是日期的话,就格式化之后显示,如果不是日期就按照原始的内容显示。
这个可以实现,您可以参考一下我的方法:
① 数据源:
[
        {
                "id": "1",
                "value": "2023-01-01"
        },
        {
                "id": "1",
                "value": "value值"
        },
        {
                "id": "1",
                "value": "tes值"
        },
        {
                "id": "1",
                "value": "2023-01-01"
        }
]


② 使用 IsDate 表达式判断数据类型,如果是日期类型,返回 True,不是就返回false。
  使用表达式,如果是日期,就格式化输出,如果不是就原样输出:{IIF(IsDate(value), Format(value, "yyyy年-MM月-dd日"), value)}




③ 最终效果:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2023-12-5 13:35:38
来自 8#
抱歉,16暂时不支持这个功能,那这个可能就暂时没有办法,16确实没有办法直接实现。
您可以尝试升级17,使用自定义函数。
或者在自己的数据里把协调时作为一个新的字段,然后实际时间等于    UTC时间+协调时。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部