這是我的第524篇原創文章,寫於2025年11月19日。
如果表的字段是整數類型,Format我們可以選擇Time zone。
這個時候界面上顯示的是下拉列表形式,類似效果如下:
然後我們去看這個實際存儲是啥,我挑個我們熟悉的,選擇為東八區北京時間的話,發現這個字段實際存儲的值是210,這個並不是北京時間與UTC 0時區時間的相差的分鐘數,那這個數字代表的是什麼呢?
帶着這個疑問我問了下微軟的Copilot,他給我的答覆很專業:
實際上我也去驗證了,Microsoft Dataverse中有名為 TimeZoneDefinition的表,用類似 https://luoyongdemo.crm.dynamics.com/main.aspx?pagetype=entitylist&etn=timezonedefinition 可以查看,效果如下:
但是這個界面點擊打開記錄的時候報錯:
可以通過Web API來查看,類似如下的url: https://luoyongdemo.crm.dynamics.com/api/data/v9.2/timezonedefinitions ,我打開中國時區給大家看看:
{
"@odata.etag": "W/\"405659\"",
"createdon": "2025-10-04T15:45:01Z",
"bias": -480,
"timezonecode": 210,
"_createdby_value": null,
"modifiedon": "2025-10-04T15:45:01Z",
"_createdonbehalfby_value": null,
"_modifiedby_value": null,
"versionnumber": 405659,
"standardname": "China Standard Time",
"_modifiedonbehalfby_value": null,
"_organizationid_value": null,
"retiredorder": 0,
"daylightname": "",
"userinterfacename": "(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi",
"timezonedefinitionid": "42b2880d-bed5-4aa3-bd69-418052d38b7e"
}
重要的就是 bias 這個字段的值,可以看到是 -480 ,意思是這條記錄的時間加上這個數字就是UTC 0時區的時間。如果是UTC 0時區時間要轉換成這個記錄代表的本地時間呢,用Power Automate可以使用如下方法,第二個步驟用到的表達式是: addMinutes(utcNow(),mul(-1,int(first(outputs('Get_the_bias_of_the_time_zone_code')?['body/value'])?['bias'])),'yyyy-MM-ddTHH:mmZ') 。
這個timezone的定義應該也可以參考 :Microsoft Time Zone Index Values 。