首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将#datetime转换为本地时区?

如何将#datetime转换为本地时区?
EN

Stack Overflow用户
提问于 2019-07-15 14:49:18
回答 1查看 1.7K关注 0票数 4

Power查询中的列将JavaScript时区转换为UK格式:

代码语言:javascript
复制
= #datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, [Timestamp]/1000)

但这会产生错误的输出(-1小时差),可能是由于UTC / GMT+Summertime的差异?

我再次尝试使用以下代码进行转换:

代码语言:javascript
复制
= DateTimeZone.ToLocal(#datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, [Timestamp]/1000))

但我知道错误是:

代码语言:javascript
复制
Expression.Error: We cannot convert the value #datetime(2019, 7, 11, 23, 11, 40) to type DateTimeZone.
Details:
    Value=11/07/2019 23:11:40
    Type=Type

我该如何正确地做这件事?

编辑:

代码语言:javascript
复制
Timestamp = Text.BetweenDelimiters([ReceivedTime], "(", ")"), type text

其中[ReceivedTime]是一个以毫秒为单位的JSON日期,如:/Date(1562886700000)/

在不诉诸Text方法的情况下,可能有一种更明智的方法来转换JSON日期。

最终的解决方案应该在Power报告中正确显示--报告应该显示用户的Local中的所有日期时间。

EN

回答 1

Stack Overflow用户

发布于 2019-07-17 23:28:23

DateTimeZone.ToLocal接受一个datetimezone参数,但您只有一个datetime。一个不同的函数DateTimeZone.From可以将一个datetime转换为datetimezone,但它假设输入datetime位于本地区域,这将向相反的方向转换。

相反,您可以使用UTC时区调用#datetimezone构造函数,然后将其转换为本地区域:

代码语言:javascript
复制
= DateTimeZone.ToLocal(#datetimezone(1970, 1, 1, 0, 0, 0, 0, 0) + #duration(0, 0, 0, [Timestamp]/1000))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57042263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档