rest - 如何将 SharePoint 仅日期字段从 UTC 转换为本地时区

标签 rest azure sharepoint azure-logic-apps

我创建了一个逻辑应用,它使用 get-item 操作从 SharePoint Online 读取数据。

但是 - 我有一个仅日期类型的共享点列,它显然只返回日期部分(如仅日期所暗示的那样)。

问题是,该共享点内部使用日期时间(UTC!)来存储日期。因此,当我在本地时间(欧洲中部时间!)在共享点中创建日期为“2016-10-20”的条目时,该条目将存储为 2016-10-19T22:00.00Z

现在,logic-app-action 正在发送休息调用,该调用将返回 2016-10-19。那么我该如何获得原始日期呢?即使我将响应视为 UTC 并将其转换为本地时间(使用 azure 函数),我也会得到 2016-10-19T02:00.00 作为结果,而不是 2016- 10-20T02:00.00

最佳答案

创建或更新条目时,SharePoint 会进行转换(基于在网站区域设置中选择的当前时区)并以协调世界时 (UTC) 保存日期时间值。 SharePoint Online REST 服务返回 UTC 日期时间(除了 Office 365 中的其他服务,例如 Outlook 服务,可以通过 Prefer: Outlook.timezone header 进行控制,请参阅示例 here 了解更多详细信息)

Prerequisites

Moment.js library

话虽如此,您需要转换 REST 响应中的日期时间值才能以本地时间显示它:

var orderDateString = "2016-10-19T22:00.00Z"; //relative datetime value in REST response 
var offset = 120; //CET offset
var localOrderDate = moment.utc(orderDateString).utcOffset(offset);
console.log(localOrderDate.format('LL')); //print local date part
<小时/>

或者您可以利用以下函数将指定的日期时间值从协调世界时 (UTC) 转换为本地时间

var TimeZoneUtilities = {
  utcToLocalTime: function getSPCurrentTime(webUrl,value) {
    return $.ajax({
      url: webUrl + "/_api/web/RegionalSettings/TimeZone",
      method: "GET",
      headers: { "Accept": "application/json; odata=verbose" }
    }).then(function (data) {
      var offset = -(data.d.Information.Bias + data.d.Information.StandardBias + data.d.Information.DaylightBias) / 60.0;
      return moment.utc(orderDateString).utcOffset(offset).toDate();
    });
  }
};

此功能类似于SPTimeZone.LocalTimeToUTC method来自 SharePoint API。

使用

var orderDateString = "2016-10-19T22:00.00Z"; //UTC datetime value from REST response 
var orderDate = new Date(orderDateString);
TimeZoneUtilities.utcToLocalTime(_spPageContextInfo.webAbsoluteUrl,orderDate)
.done(function(value)
{
    console.log("Server time: " + value.format("yyyy MM dd"));
})
.fail(function(error){
    console.log(JSON.stringify(error));
}); 

关于rest - 如何将 SharePoint 仅日期字段从 UTC 转换为本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404641/

相关文章:

java - 休息api分页

azure - 具有可选 ServiceBusOutput 返回值的隔离进程 Azure Function

c# - 如何以编程方式在企业 Wiki 站点的页面库中创建可编辑的 Wiki 页面

sharepoint - 如何在 MS Graph 中检索 DriveItems 的自定义列

REST - 删除后使用 HTTP 缓存获取集合

ruby-on-rails - HTTP POST 中的多个键/值对,其中键是相同的名称

rest - Groovy Rest Api

azure - Azure 本地数据网关的服务总线组件 - 定价

azure - Windows Azure 中同一实例上的多个角色

sharepoint - 将更改应用到 SharePoint 应用程序的最佳实践