是否可以使用Microsoft.SharePoint.Client以编程方式获取Sharepoint站点的时区?

时间:2013-04-24 02:25:23

标签: c# sharepoint csom

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

3 个答案:

答案 0 :(得分:4)

不幸的是,对于SharePoint的客户端对象模型,不可能获得时区perse。服务器对象模型和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 Client DLL并正确引用它们。希望这会有所帮助。

答案 1 :(得分: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将包含您的时区,偏见等。

答案 2 :(得分: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();
};