Files
2026-06-25 12:19:29 +03:00

36 lines
1.5 KiB
C#

using RTCSync.Services;
using RTCSync.Utils;
namespace RTCSync.Options;
public class SyncTimeOption : IOption
{
public string Description => "Синхронизирует системное время со временем модуля реального времени. Если часы хранят UTC время, то используйте опцию universal";
public List<string> OptionNames => ["-S", "--sync-time"];
public string OptionValues => "{local, l, universal, u}";
public void Execute(OptionArgs args)
{
var device = DeviceDispatcher.SetUpDevice();
if (device == null)
return;
Console.WriteLine("Время на модуле:");
DeviceReaders.PrintTimeRTC(device);
var timeModel = DeviceReaders.GetTimeRTC(device);
// время в формате понятном для kernel32
WindowsTimeUtils.SystemTime systime;
if (args.OptionValues.TryGetValue("unnamed", out var value) && value is "universal" or "u")
systime = new WindowsTimeUtils.SystemTime(timeModel.Time);
else if (value is "local" or "l")
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
else
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
Console.WriteLine(WindowsTimeUtils.SetSystemTime(ref systime)
? "Время установлено в системе"
: "Ошибка: нет прав администратора");
}
}