Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算列表框中的日期和当前计算机时钟之间的时间差_C#_Date_Listbox_Calculation - Fatal编程技术网

C# 计算列表框中的日期和当前计算机时钟之间的时间差

C# 计算列表框中的日期和当前计算机时钟之间的时间差,c#,date,listbox,calculation,C#,Date,Listbox,Calculation,我想计算列表框中所选行的日期与当前计算机时钟之间的时间差。所选行包含5种不同类型的信息。当我在列表框中选择特定行时,我可以选择使用单选按钮计算以年、月或日为单位的时间差,并通过按计算按钮在文本框中显示结果。我该怎么做?是否可以在列表框中的数据中定义日期? 从列表框中获取所选项目,并从其文本中获取日期。然后使用DateTime.Parse方法将其转换为DateTime。然后你只需要从DateTime中减去。现在,计算日期得到TimeSpan,你可以得到天数,这是差值。你可以用365除以五月份,用3

我想计算列表框中所选行的日期与当前计算机时钟之间的时间差。所选行包含5种不同类型的信息。当我在列表框中选择特定行时,我可以选择使用单选按钮计算以年、月或日为单位的时间差,并通过按计算按钮在文本框中显示结果。我该怎么做?是否可以在列表框中的数据中定义日期?

从列表框中获取所选项目,并从其文本中获取日期。然后使用DateTime.Parse方法将其转换为DateTime。然后你只需要从DateTime中减去。现在,计算日期得到TimeSpan,你可以得到天数,这是差值。你可以用365除以五月份,用30除以月份。或者,如果你想更准确地说:

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

其中date1是实际日期,date2是从listBoxItem中计算出来的日期。这是从给定日期起经过的月数。

从列表框中获取所选项目,并从其文本中获取日期。然后使用DateTime.Parse方法将其转换为DateTime。然后你只需要从DateTime中减去。现在,计算日期得到TimeSpan,你可以得到天数,这是差值。你可以用365除以五月份,用30除以月份。或者,如果你想更准确地说:

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

其中date1是实际日期,date2是从listBoxItem中计算出来的日期。这是从给定日期起经过的月数。

1。
ListBox
项属于object类型,因此您可以简单地创建如下类:

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);
然后只需按如下方式设置列表框项:

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.您可以从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,因为您手中有所有属性,而不需要拆分、计算和转换。

1。
ListBox
项属于object类型,因此您可以简单地创建如下类:

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);
然后只需按如下方式设置列表框项:

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.您可以从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,因为您手中有所有属性,无需拆分、计算和转换。

如何从文本中获取日期?如何从文本中获取日期?我想我需要选择选项2,因为我需要将文本文件导入列表框。好吧,这是您的选择,我只是用它们的理由来展示可能性。我尝试了选项2中给出的编码,但是在第二行和第三行有一些错误。我把编码放在Year单选按钮下,在ParseExact和Date(第三行)private void rbtnYear_CheckedChanged(对象发送者,EventArgs e){string dateStr=listBox1.SelectedIndex.ToString().Split(',')[3];DateTime Date=DateTime.ParseExact(dateStr);double difference=(DateTime.Now-listBox1.SelectedItem.Date).TotalSeconds;}注意,我已更改了编码,但第三行编码中的项仍然存在错误。private void rbtnYear_CheckedChanged(对象发送方,事件参数e){string dateStr=listBox1.SelectedIndex.ToString().Split(',')[3];DateTime date=DateTime.ParseExact(dateStr,“yyyy/mm/dd”,System.Globalization.CultureInfo.InvariantCulture);双差=(DateTime.Now-item.date).TotalSeconds;}第三行是关于计算的,你可以做你想做的任何事情,比如:
DateTime.Now.Year-date.Year
…我想我需要选择选项2,因为我需要将文本文件导入列表框。好吧,这是你的选择,我只是用它们的理由来展示可能性。我尝试了选项2中给出的编码,但是在第二行和第三行有一些错误。我把编码放在Year单选按钮下,在ParseExact和Date(第三行)private void rbtnYear_CheckedChanged(对象发送者,EventArgs e){string dateStr=listBox1.SelectedIndex.ToString().Split(',')[3];DateTime Date=DateTime.ParseExact(dateStr);double difference=(DateTime.Now-listBox1.SelectedItem.Date).TotalSeconds;}注意,我已更改了编码,但第三行编码中的项仍然存在错误。private void rbtnYear_CheckedChanged(对象发送方,事件参数e){string dateStr=listBox1.SelectedIndex.ToString().Split(',')[3];DateTime date=DateTime.ParseExact(dateStr,“yyyy/mm/dd”,System.Globalization.CultureInfo.InvariantCulture);双差=(DateTime.Now-item.date).TotalSeconds;}第三行是关于计算的,你可以做任何你想做的事情,比如:
DateTime.Now.Year-date.Year
。。。