2013-04-24 4 views
0

Возможно ли получить часовой пояс сайта Sharepoint программным путем с помощью Microsoft.SharePoint.Client в C#? Мне нужен часовой пояс сайта Sharepoint, чтобы он соответствовал конкретному часовому поясу.Можно ли запрограммировать часовой пояс сайта Sharepoint с помощью Microsoft.SharePoint.Client?

ответ

4

К сожалению, для объектной модели клиента Side невозможно получить временную зону perse. Объектная модель сервера и SPServices содержит свойство SPWeb под названием RegionalSettings, однако этого не хватает в CSOM.

Хорошо, что CSOM имеет функцию Utility, называемую 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(); 

Примите к сведению, что вам нужно иметь библиотеки DLL клиента SharePoint, включенных в проект, а также ссылки на них должным образом. Надеюсь это поможет.

+0

Постараюсь это. Благодаря! – Rhia

+1

Кто-то должен отметить это как ответ. – danludwig

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 будет содержать часовой пояс, смещение, и т.д ..

+0

RegionalSettings не является собственностью ClientContext.Web. Этот фрагмент кода дает мне синтаксическую ошибку. И, конечно же, я ссылаюсь на DLL-файлы Sharepoint Client. – bittusarkar

+1

http://msdn.microsoft.com/en-Us/library/microsoft.sharepoint.client.regionalsettings.aspx Тот факт, что вы его не нашли, вероятно, потому, что вы используете SP2010. – Deptor

0

Мой код похож на Deptor, но я думаю, что мой код исправляет несколько проблем синтаксиса, которые я имел, когда я попытался запустить его на моем SP 2013 сайт. Я также использую некоторые глобальные переменные для хранения таких вещей, как объекты CSOM ClientContext, Web, Culture и Timezone SP, чтобы помочь учащимся понять, что содержит каждый объект.

Код:

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(); 
};