Загрузка данных


using System;
using System.Windows;

namespace TimeWpfApp
{
    public partial class MainWindow : Window
    {
        private int _hour;
        private int _minute;
        private int _second;

        public int Hour
        {
            get => _hour;
            set
            {
                if (value < 0 || value > 23)
                    throw new ArgumentOutOfRangeException("Hour", "Часы должны быть от 0 до 23");
                _hour = value;
            }
        }

        public int Minute
        {
            get => _minute;
            set
            {
                if (value < 0 || value > 59)
                    throw new ArgumentOutOfRangeException("Minute", "Минуты должны быть от 0 до 59");
                _minute = value;
            }
        }

        public int Second
        {
            get => _second;
            set
            {
                if (value < 0 || value > 59)
                    throw new ArgumentOutOfRangeException("Second", "Секунды должны быть от 0 до 59");
                _second = value;
            }
        }

        public MainWindow()
        {
            InitializeComponent();
            _hour = 0;
            _minute = 0;
            _second = 0;
            UpdateUI();
        }

        public void AddHours(int hours)
        {
            int totalHours = _hour + hours;
            _hour = totalHours % 24;
            if (_hour < 0) _hour += 24;
        }

        public void AddMinutes(int minutes)
        {
            long totalSeconds = (long)_hour * 3600 + _minute * 60 + _second + (long)minutes * 60;
            Normalize(totalSeconds);
        }

        public void AddSeconds(int seconds)
        {
            long totalSeconds = (long)_hour * 3600 + _minute * 60 + _second + seconds;
            Normalize(totalSeconds);
        }

        private void Normalize(long totalSeconds)
        {
            const int secondsInDay = 86400;
            totalSeconds %= secondsInDay;
            if (totalSeconds < 0) totalSeconds += secondsInDay;

            _hour = (int)(totalSeconds / 3600);
            _minute = (int)((totalSeconds % 3600) / 60);
            _second = (int)(totalSeconds % 60);
        }

        private void UpdateUI()
        {
            DisplayTime.Text = $"{_hour:D2}:{_minute:D2}:{_second:D2}";
            DisplayError.Text = string.Empty;
        }

        private void BtnSetTime_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Hour = int.Parse(InputHour.Text);
                Minute = int.Parse(InputMinute.Text);
                Second = int.Parse(InputSecond.Text);
                UpdateUI();
            }
            catch (FormatException)
            {
                DisplayError.Text = "Ошибка: Введите целые числа";
            }
            catch (Exception ex)
            {
                DisplayError.Text = ex.Message;
            }
        }

        private void BtnAddHour_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                AddHours(int.Parse(InputValue.Text));
                UpdateUI();
            }
            catch (Exception ex)
            {
                DisplayError.Text = ex.Message;
            }
        }

        private void BtnAddMinute_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                AddMinutes(int.Parse(InputValue.Text));
                UpdateUI();
            }
            catch (Exception ex)
            {
                DisplayError.Text = ex.Message;
            }
        }

        private void BtnAddSecond_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                AddSeconds(int.Parse(InputValue.Text));
                UpdateUI();
            }
            catch (Exception ex)
            {
                DisplayError.Text = ex.Message;
            }
        }
    }
}