Загрузка данных
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;
}
}
}
}