如何在Power Query M中将日期时间转为带时区偏移格式用于REST API
Power Query M 实现代码
下面是符合要求的日期转换与API请求体生成代码,解决400错误的核心是正确调整结束日期到当日最后一秒并生成标准UTC时区的ISO8601格式字符串:
let // 定义原始日期参数 FirstDate = #datetime(2023, 2, 1, 0, 0, 0), EndDate = #datetime(2023, 5, 30, 0, 0, 0), // 处理起始日期:转换为UTC时区并格式化 FormattedFrom = DateTimeZone.ToText( DateTimeZone.SwitchZone(DateTimeZone.FromLocal(FirstDate), 0), "yyyy-MM-dd'T'HH:mm:ss'+'00:00" ), // 处理结束日期:先调整为当日最后一秒,再转换为UTC时区并格式化 AdjustedEndDate = DateTime.AddSeconds(DateTime.AddDays(EndDate, 1), -1), FormattedTo = DateTimeZone.ToText( DateTimeZone.SwitchZone(DateTimeZone.FromLocal(AdjustedEndDate), 0), "yyyy-MM-dd'T'HH:mm:ss'+'00:00" ), // 生成符合API要求的JSON请求体 RequestBody = Json.FromValue([ from = FormattedFrom, to = FormattedTo ]) in RequestBody
关键说明
- 结束日期调整:原始
EndDate是5/30 00:00,通过DateTime.AddDays(EndDate, 1)得到5/31 00:00,再减1秒得到5/31 23:59:59,匹配API要求的时间范围。 - 时区处理:用
DateTimeZone.FromLocal将本地时间转为带时区的时间,再通过SwitchZone(0)切换到UTC+00:00,确保时区标识正确。 - 格式控制:通过
DateTimeZone.ToText指定格式字符串,生成API需要的yyyy-MM-dd'T'HH:mm:ss'+00:00'格式。
如果你的原始日期已是UTC时间,可去掉DateTimeZone.FromLocal,直接用DateTimeZone.From(FirstDate, 0)来转换。
内容的提问来源于stack exchange,提问作者kiran25
相关产品推荐
相关产品推荐

