使用Microsoft.Graph库c#从Sharepoint列表中获取日期字段



以前我们使用Microsoft.Sharepoint.CSOM库从Sharepoint:获取时区信息

var ctx = new ClientContext(siteUrl);
var spTimeZone = ctx.Web.RegionalSettings.TimeZone;
ctx.Load(spTimeZone);
// 2.Resolve System.TimeZoneInfo from Microsoft.SharePoint.Client.TimeZone 
var fixedTimeZoneName = spTimeZone.Description.Replace("and", "&");
var timeZoneInfo = TimeZoneInfo.GetSystemTimeZones().FirstOrDefault(tz => tz.DisplayName == fixedTimeZoneName);
var dayItems = items.Select(x => x.FieldValues).ToList();
var date = (DateTime)dayItems.First()["ApplicableDay"];
var specifiedDate = TimeZoneInfo.ConvertTimeFromUtc(relevantGasDay, timeZone);

使用这种方法,我们收到的日期与用户输入的日期完全相同。

目前,我们有以下内容:

var ctx = new GraphServiceClient(_tokenCredential);
var listQuery = ctx.Sites[site].Lists[listName];
var list = await listQuery.Request().GetAsync();
var queryOptions = new List<QueryOption>()
{
new QueryOption("expand", "fields")
}
var listItems = await listQuery.Items.Request(queryOptions).GetAsync();
var dayitems = listItems.Select(listItem => listItem.Fields.AdditionalData);
var date = dayItems.First()["ApplicableDay"];

AdditionalData将列表的每一行都作为一个字典来包含。其中一个值是日期

我想获得与用户输入完全相同的日期。如何使用Microsoft.Graph版本4.40.0实现这一点?是否有任何获取区域设置的请求?

目前,我的用户在一个时区。因此,我用以下代码克服了这一点:

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time")
var relevantDay = Convert.ToDateTime(item["ApplicableDay"].ToString());
var unspecified = DateTime.SpecifyKind(relevantDay, DateTimeKind.Unspecified);
var time = TimeZoneInfo.ConvertTime(unspecified, timeZone);

但是,如果可能的话,我仍然想从Microsoft Graph获得时区信息。

相关内容

  • 没有找到相关文章

最新更新