public static com.robotraconteur.datetime.DateTimeLocal LocalNow(RobotRaconteurNode node = null, DeviceInfo info = null) { if (node == null) { node = RobotRaconteurNode.s; } var now = node.NowUTC; var epoch_now = now - (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)); var ret = new com.robotraconteur.datetime.DateTimeLocal(); ret.seconds = (long)Math.Floor(epoch_now.TotalSeconds); ret.nanoseconds = (int)((epoch_now - TimeSpan.FromSeconds(ret.seconds)).Ticks * ((long)1e6 / TimeSpan.TicksPerMillisecond)); var utc_offset = TimeZoneInfo.Local.GetUtcOffset(now); ret.seconds += (long)utc_offset.TotalSeconds; var clock_info = new com.robotraconteur.datetime.ClockInfo(); clock_info.clock_type = (int)com.robotraconteur.datetime.ClockTypeCode.default_; var device_uuid_bytes = info?.device?.uuid.uuid_bytes; clock_info.clock_uuid.uuid_bytes = device_uuid_bytes ?? new byte[16]; ret.clock_info = clock_info; ret.utc_offset_seconds = (int)utc_offset.TotalSeconds; ret.timezone_name = TimeZoneInfo.Local.Id; return(ret); }
public static com.robotraconteur.datetime.TimeSpec2 TimeSpec2Now(RobotRaconteurNode node = null, DeviceInfo info = null) { if (node == null) { node = RobotRaconteurNode.s; } var now = node.NowTimeSpec; var ret = new com.robotraconteur.datetime.TimeSpec2(); ret.seconds = now.seconds; ret.nanoseconds = now.nanoseconds; var clock_info = new com.robotraconteur.datetime.ClockInfo(); clock_info.clock_type = (int)com.robotraconteur.datetime.ClockTypeCode.node_default; var device_uuid_bytes = info?.device?.uuid.uuid_bytes; clock_info.clock_uuid.uuid_bytes = device_uuid_bytes ?? new byte[16]; ret.clock_info = clock_info; return(ret); }