Вам нужно использовать in_time_zone
(т.е. Time.now.in_time_zone
), чтобы получить что-то отличное от UTC.
Я рекомендую не использовать в первую очередь относительные пути.
Используйте Path.Combine , чтобы включить относительные пути в абсолютные пути. Например, вы можете использовать это, чтобы получить полный путь к вашему запускаемому EXE:
string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;
После этого вы можете получить его каталог:
string exeDir = Path.GetDirectoryName(exeFile);
и превратить свой относительный путь в абсолютный путь:
Если вы ожидаете, что ресурс будет находиться в том же каталоге, что и исполняемый файл, или в подкаталоге этого каталога, лучше всегда использовать
string fullPath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), subPath);
или если вас беспокоит, что рабочий каталог может быть неправильным, вы можете сделать это:
string fullPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), subPath);