计算listBox中的日期与当前计算机时钟之间的时间差
Calculate the difference of the time between the date in listBox and present computer clock
我想计算 listBox 中 selected 行的日期与当前计算机时钟之间的时间差。 selected 行包含 5 种不同的信息。当我 select 列表框中的特定行时,我可以选择使用单选按钮计算年月或日的时间差,并通过按 Calculate[ 将结果显示在文本框中=14=] 按钮。我怎样才能做到这一点?是否可以在列表框中的数据中定义日期?
从 listBox 中获取所选项目,并从其文本中获取日期。然后使用 DateTime.Parse 方法将其转换为 DateTime。那么你只要减去DateTime.Now,计算出的Date得到TimeSpan,在TimeSpan中可以得到Days,这就是差值。您可以通过除以 365 来计算年数,除以 30 来计算月数。或者,如果您想更精确地计算:
((date1.Year - date2.Year) * 12) + date1.Month - date2.Month
其中date1是实际日期,date2是从listBoxItem中计算出来的。那是从给定日期过去的月数。
1.ListBox
项是对象类型,因此您可以像这样简单地创建一个 class:
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);
您将能够获取每个项目的日期时间,例如:
var item = (Item)Listbox.Items[0];
double difference = (DateTime.Now - item.Date).TotalSeconds; // or what ever way you want to calculate it.
2.You可以从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,因为您拥有所有属性,无需拆分、计算和转换。
我想计算 listBox 中 selected 行的日期与当前计算机时钟之间的时间差。 selected 行包含 5 种不同的信息。当我 select 列表框中的特定行时,我可以选择使用单选按钮计算年月或日的时间差,并通过按 Calculate[ 将结果显示在文本框中=14=] 按钮。我怎样才能做到这一点?是否可以在列表框中的数据中定义日期?
从 listBox 中获取所选项目,并从其文本中获取日期。然后使用 DateTime.Parse 方法将其转换为 DateTime。那么你只要减去DateTime.Now,计算出的Date得到TimeSpan,在TimeSpan中可以得到Days,这就是差值。您可以通过除以 365 来计算年数,除以 30 来计算月数。或者,如果您想更精确地计算:
((date1.Year - date2.Year) * 12) + date1.Month - date2.Month
其中date1是实际日期,date2是从listBoxItem中计算出来的。那是从给定日期过去的月数。
1.ListBox
项是对象类型,因此您可以像这样简单地创建一个 class:
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);
您将能够获取每个项目的日期时间,例如:
var item = (Item)Listbox.Items[0];
double difference = (DateTime.Now - item.Date).TotalSeconds; // or what ever way you want to calculate it.
2.You可以从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,因为您拥有所有属性,无需拆分、计算和转换。