Рассчитайте разницу времени между датой в listBox и нынешними компьютерными часами - PullRequest
1 голос
/ 01 декабря 2019

Я хочу рассчитать разницу во времени между датой выбранной строки в listBox и текущими компьютерными часами. Выбранная строка содержит 5 видов различной информации. Когда я выбираю конкретную строку в списке, я могу рассчитать разницу во времени в годах, месяцах или днях с помощью переключателей и отобразить результат в текстовом поле, нажав кнопку Рассчитать . Как я могу это сделать? Можно ли определить дату среди данных в listBox? enter image description here

Ответы [ 2 ]

0 голосов
/ 01 декабря 2019

1. ListBox элементы имеют тип объекта, поэтому вы можете просто создать класс, подобный этому:

public class Item
{
    public string Firstame {get; set;}
    public string Lasttame {get; set;}
    public DateTime Date{get; set;}
    ...

    public override string ToString()
    {
          return $"{Firstname},{LastName},{Date.ToString("yyyy/MM/dd")}";
    }
}

, а затем просто установить элементы списка, например:

var item = new Item {Name = "Jane", Lastname = "Lambert", Date = DateTime.Now};
Listbox.Items.Add(item);

Вы сможете получить DateTime для каждого элемента, например:

var item = (Item)Listbox.Items[0];
double difference = (DateTime.Now - item.Date).TotalSeconds; // or what ever way you want to calculate it.

2.Вы можете получить строку из Listbox, преобразовать ее в DateTime и затем выполнить расчет:

string dateStr = listbox.Items[1].ToString().Split(',')[3];
DateTime date = DateTime.ParseExact(dateStr, "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture);
double difference = (DateTime.Now - item.Date).TotalSeconds;

Но я бы сам выбрал вариант 1, поскольку у вас есть все свойства под рукой без необходимости разбивать, вычислять и преобразовывать.

0 голосов
/ 01 декабря 2019

Из listBox получить выбранный элемент, а из его текста получить Дата. Затем используйте метод DateTime.Parse, чтобы превратить его в DateTime. Затем вы просто вычитаете DateTime.Now, вычисленную Date, чтобы получить TimeSpan, в котором вы можете получить Days, что является разницей. Вы можете вычислить, сколько лет это может быть путем деления на 365, а месяцев - делением на 30. Или, если вы хотите более точным:

((date1.Year - date2.Year) * 12) + date1.Month - date2.Month

Где date1 - фактическая дата, а date2 рассчитывается изListBoxItem. То количество месяцев, которое прошло с данной даты.

...