以前我们使用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获得时区信息。