Функция не отрабатывает как надо , не получает значения

Рейтинг: 0Ответов: 1Опубликовано: 06.06.2023

Имеется следующее ТЗ:

Составить описание класса для представления времени. Предусмотреть возможности установки времени и изменения его отдельных полей (час, минута, секунда) с проверкой допустимости вводимых значений. В случае недопустимых значений полей выбрасываются исключения. Создать методы изменения времени на заданное количество часов, минут и секунд. Написать программу, демонстрирующую все разработанные элементы класса.

Часть кода уже реализовано, но возникла проблема.

Код класса:

namespace ClassProperties.Классы
{
    public class Time
    {
        public DateTime _time = DateTime.Now;
        public DateTime time
        {
            get { return _time; }
            set { _time = value; }
        }
        public DateTime ReplaceTime(int hours, int minute, int seconds)
        {
            DateTime time1 = time;
            time1.AddHours(hours);
            time1.AddMinutes(minute);
            time1.AddSeconds(seconds);
            return time1;
        }
    }
    
}

Код окна в котором используется этот класс:

namespace ClassProperties.Окна
{
    /// <summary>
    /// Логика взаимодействия для Zadanie3.xaml
    /// </summary>
    public partial class Zadanie3 : Window
    {
        public Zadanie3()
        {
            InitializeComponent();
        }
        Time timeclass = new Time();
 
 
        private void GetTB_Click(object sender, RoutedEventArgs e)
        {
            Res2.Content= timeclass.time.ToString("hh:mm:ss");
        }
 
        private void ChangeBT_Click(object sender, RoutedEventArgs e)
        {
            int hours = Convert.ToInt32(HourTB.Text);
            int minutes = Convert.ToInt32(MinuteTB.Text);
            int seconds = Convert.ToInt32(SecTB.Text);
 
            if (hours > 24 && minutes > 60 && seconds > 60 &&hours < 0 && minutes < 0 && seconds < 0)
            {
                MessageBox.Show("Неправильно ввдены данные (часов не больше 24 , минут не больше 60 , секунд не больше 60");
                return;
            }
            if (hours < 0 && minutes < 0 && seconds < 0)
            {
                MessageBox.Show("Не может быть отрицательных чисел");
                return;
            }
            else
            {
                Res.Content = timeclass.ReplaceTime(hours, minutes, seconds).ToString("hh:mm:ss");
 
 
            }
            
        }
    }
}

Выводит следующее:

введите сюда описание изображения

Хотя по логике , должен к 02:55:28 добавить 2 часа , 3 минуты , 4 секунды Буду признателен за любую помощь!

Ответы

▲ -2
  1. Научиться использовать привязки, не храните данные в UI!.
  2. Используйте подходящие для этого инструменты, допустим за время отвечает TimeSpan, получите var dd = DateTime.Now + new TimeSpan(05, 54, 21);.
  3. Не конвертируйте лишний раз данные, храните их в том виде, который нужен вам для дальнейших подсчетов, а XAML (если речь про WPF) пусть выводит в нужном виде при помощи StringFormat