0

是否可以在 C# 中使用 Microsoft.SharePoint.Client 以编程方式获取 Sharepoint 站点的时区?我需要 Sharepoint 站点时区以将其与特定时区匹配。

4

3 回答 3

5

不幸的是,对于 SharePoint 的客户端对象模型,无法获得时区本身。服务器对象模型和 SPServices 包含一个名为 RegionalSettings 的 SPWeb 属性,但是 CSOM 中缺少该属性。

这里的好处是 CSOM 有一个实用功能FormatDateTime,您可以使用它来将特定的字符串/日期转换为您网站的时区。

下面是一个在简单控制台应用程序中使用的示例:

        ClientContext clientContext = new ClientContext("http://yoursite.com");
        Site site = clientContext.Site;

        DateTime dt = DateTime.Parse("04/24/2013 5:44PM").ToUniversalTime();
        ClientResult<string> cr = Utility.FormatDateTime(clientContext, clientContext.Web, dt, DateTimeFormat.DateTime);
        clientContext.ExecuteQuery();
        string value = cr.ToString();
        DateTime webdt = DateTime.Parse(cr.Value.ToString());
        Console.WriteLine(webdt.ToString());
        Console.Read();

请注意,您需要将 SharePoint 客户端 DLL 包含在项目中并正确引用它们。希望这可以帮助。

于 2013-04-24T11:31:49.907 回答
0
ClientContext context = new ClientContext(yourSite);
var culture = context.Web.RegionalSettings;
context.Load(culture);
var tz = culture.TimeZone;
context.Load(tz);
context.ExecuteQuery();
context.Dispose();

tz 将包含您的时区、偏差等。

于 2013-11-29T16:18:59.907 回答
0

我的代码与 Deptor 的代码相似,但我认为我的代码修复了我尝试在我的 SP 2013 站点上运行它时遇到的一些语法问题。我还使用一些全局变量来存储诸如 ClientContext、Web、Culture 和 Timezone SP CSOM 对象之类的内容,以帮助学习者了解每个对象包含的内容。

代码:

var context, web, culture, tz;

var siteTzId, siteTzDesc, siteTzInformation;

getSiteRegionalTimeZone();

setTimeout(function(){
    alert("Site TZ = |"+ siteTzDesc +"|");
}, 2000);

function getSiteRegionalTimeZone() {
    context = new SP.ClientContext();
    web = context.get_web();
    culture = web.get_regionalSettings();
    context.load(culture);
    tz = culture.get_timeZone();
    context.load(tz);
    context.executeQueryAsync(function(){
        siteTzId = tz.$5_0.$H_0.Id;
        siteTzDesc = tz.$5_0.$H_0.Description;
        siteTzInformation = tz.$5_0.$H_0.Information;
    });
    context.dispose();
};
于 2016-12-15T21:56:37.130 回答