2015-12-26 2 views
0

У меня есть приложение CW UWP, которое использует OneDrive REST APIs.OneDrive api возвращает неправильные последние измененные значения

Приложение запрашивает папку приложения и извлекает все файлы из этой специальной папки (папки приложения).

string appFolderParameters = string.Concat(OneDriveApi, OneDriveAppsFolderPath, "/children", "?access_token=", App.Settings.Values["access_token"]); 
var appFolderMeetings = await client.GetStringAsync(appFolderParameters); 
foreach (var file in files) 
{ 
    string fileName = file["name"]?.ToString(); 
    string lastModifiedString = file["lastModifiedDateTime"]?.ToString(); 
} 

Хотя запрос работает нормально, то значение, особенно lastModifiedString всегда 1 час меньше, чем.

Мой компьютер TimeZone установлен на «Автоматически», а для учетной записи Microsoft Account TimeZone установлено значение CET (то же, что и у моего ПК). Любая идея, почему API возвращает неверную lastModifiedString?

Вот несколько скриншотов, чтобы показать эту проблему.

Последнее обновление Время в браузере: enter image description here

время последнего обновления в результате API/Visual Studio: enter image description here

ответ

1

Похоже lastModifiedDateTime просто в UTC. Зимой разница между CET и UTC составляет один час.

Для преобразования между местным временем и UTC используйте тип DateTime, или даже лучше, тип DateTimeOffset.

+0

ОК. Исходя из вашего комментария, учитывая, что время в UTC, я добавил следующий код, и теперь он работает нормально. string lastModifiedString = file ["fileSystemInfo"] ["lastModifiedDateTime"] ?. ToString() + "+00: 00"; DateTimeOffset lastModified; if (! DateTimeOffset.TryParse (lastModifiedString, out lastModified)) { lastModified = default (DateTimeOffset); } – sudarsanyes

Смежные вопросы