Який найзручніший спосіб створити конкретний екземпляр, Microsoft.SharePoint.SPTimeZone
як такий:
SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
.OfType<SPTimeZone>()
.FirstOrDefault(tz => tz.Information.Bias == 0
&& tz.Information.DaylightBias == 0);
Це найкращий злом, який я можу отримати ...
Це, зокрема, проблема для мене, оскільки я хотів би знущатися з цієї частини коду для модульного тестування та змусити її завжди повертати UTC. Властивість, GlobalTimeZones
здається, залежить від HttpContext.Current
фактичного запиту - обов’язкова умова, якої я не маю в своїх одиничних тестах ...
NB: Я знаю, що існує, System.TimeZoneInfo
але стороння асамблея змушує мене використовувати SPTimeZone ...
SPTimeZone
передбачається, що це часовий пояс сайту, а не як загальний клас часового поясу. Параметри надає вам список доступних, тобто встановлених часових поясів і, можливо, завантажується з налаштувань у базі даних. Відсутність конструктора існує з причини - ви не повинні створювати це самостійно. Просто передайтеSPWeb.RegionalSettings.TimeZone
власність поточної мережі в бібліотеку