我正在研究c#中的一个新项目,我对日期和时间没有经验。
这里我需要找到两个时间值之间的差异,这是以字符串格式
string pointavalue = comboBox1.Text + ":" + comboBox2.Text + ":" + comboBox5.Text;
string pointbvalue = comboBox3.Text + ":" + comboBox4.Text + ":" + comboBox6.Text;
string pointcvalue = comboBox7.Text + ":" + comboBox8.Text + ":" + comboBox9.Text;
DateTime pointa = DateTime.Parse(pointavalue, System.Globalization.CultureInfo.CurrentCulture);
DateTime pointb = DateTime.Parse(pointbvalue, System.Globalization.CultureInfo.CurrentCulture);
DateTime pointc = DateTime.Parse(pointcvalue, System.Globalization.CultureInfo.CurrentCulture);
string time1 = pointa.ToString("HH:mm:ss");
string time2 = pointb.ToString("HH:mm:ss");
string time3 = pointc.ToString("HH:mm:ss");
有三个值pointavalue,pointbvalue。 pointcvalue。 它们是组合框的组合字符串值。
现在我如何从pointavalues中减去pointbvalues? 我知道它们是字符串格式,因此无法执行操作。
你正在寻找的代码不是我的,有人帮助我,但它的工作是预期的。
我正在学习C#所以请耐心等待。
好吧我认为找出一些东西,但我仍然无法解决它。
这是我最近使用代码
的工作DateTime inputa = DateTime.Parse(label21.Text, System.Globalization.CultureInfo.CurrentCulture);
DateTime inputb = DateTime.Parse(label23.Text, System.Globalization.CultureInfo.CurrentCulture);
if (pointa < pointb)
{
TimeSpan diff1 = pointb.Subtract(pointa);
DateTime d1=Convert.ToDateTime(diff1);
if (d1 < inputa)
{
label34.Text = "fail";
}
else
{
label34.Text = "pass";
}
在这里,我想检查时间diff1和inputa的条件,这就是我完成这个项目所需的一切。
答案 0 :(得分:1)
一个更简单的例子:
void Main()
{
DateTime now = DateTime.Now;
DateTime yesterday = now.AddDays(-1);
TimeSpan difference = yesterday - now;
Console.WriteLine (difference.GetType().Name);
Console.WriteLine (difference.TotalSeconds); // expecting -86400
}
运行此将打印
TimeSpan
-86400
答案 1 :(得分:1)
您无法解决此问题的原因是您尝试比较两种不同的数据类型,Timespan和Datetime不相同
答案 2 :(得分:0)
.slideUp()
或者,你可以使用 - 运算符,你得到一个包含差异的Timespan:
TimeSpan abdiff = pointb.Substract(pointa);
TimeSpan bcdiff = pointc.Substract(pointb);
答案 3 :(得分:0)
假设您的组合框包含小时,分钟和秒,那么您可以执行以下操作。
TimeSpan pointa = new TimeSpan(int.Parse(comboBox1.Text), int.Parse(comboBox2.Text), int.Parse(comboBox5.Text));
TimeSpan pointb = new TimeSpan(int.Parse(comboBox3.Text), int.Parse(comboBox4.Text), int.Parse(comboBox6.Text));
TimeSpan pointc = new TimeSpan(int.Parse(comboBox7.Text), int.Parse(comboBox8.Text), int.Parse(comboBox9.Text));
TimeSpan aTob = pointa > pointb
? pointa - pointb
: (pointa + TimeSpan.FromDays(1)) - pointb;
基本上,这假设您的组合框仅具有有效小时(0-23),分钟(0-59)和秒(0-59)值。然后你只需确定你的时间是否在同一天。如果您认为pointa
晚于pointb
,那么检查它是否大于pointb
意味着您可以进行直接减法。如果没有,那么它必须是第二天的时间,你只需要加1天就可以减去pointb
。
这是基于你的断言01:00 - 23:00应该是2小时而不是-22。如果包含日期,那么您最好知道时间是在同一天或第二天,还是从完全不同的年份开始。