在 C# WinForm 中计算存活年数 [重复]

Posted

技术标签:

【中文标题】在 C# WinForm 中计算存活年数 [重复]【英文标题】:Calculate # of Years Alive in C# WinForm [duplicate] 【发布时间】:2013-05-06 10:27:12 【问题描述】:

我正努力在母亲节的早晨完成一个快速的“学习示范”计划。我为妈妈创建了一个文本框来输入我的生日,并创建了一个标签来显示她单击按钮时我还活着的年数、月数、天数和秒数。

以下是我卡住​​的代码部分:

private void button1_Click(object sender, EventArgs e)

    DateTime  sonsBirthday = DateTime.Parse(txtSonsBirthday.Text).Date;

    DateTime now =  DateTime.Now;

    TimeSpan timeSpan = now - sonsBirthday;
    timeSpan = Convert.TimeSpan(lblTimeAlive); // blue squiggly under TimeSpan here

正如我在代码中评论的那样,我在最后一行的TimeSpan 下得到了一个蓝色波浪线;但我不明白为什么。我做错了什么?

我只是一名学生:所以我有这个概念,但不习惯日期时间格式,需要一点帮助。

【问题讨论】:

这是一个有创意的母亲节礼物! 我认为你可能在逻辑上倒退了最后一行。您不想将timeSpan = now - sonsBirthday 的文本表示分配给lblTimeAlive.Text吗? 这是正确的,我想解析它的标签,我得到以下异常:错误1'System.Convert'不包含'TimeSpan'的定义 您的意思是这样做:lblTimeAlive.Text = timeSpan.ToString();?这会在标签中显示总存活时间。 @KenWhite:您建议的消息是 Sprint 2 的一项功能;这也是他所学到的渐进式精细化和敏捷开发的证明。 ;) 【参考方案1】:

试试这样的:

private void button1_Click(object sender, EventArgs e)

    DateTime  sonsBirthday = DateTime.Parse(txtSonsBirthday.Text).Date;

    DateTime now =  DateTime.Now;

    TimeSpan timeSpan = now - sonsBirthday;
    //timeSpan = Convert.TimeSpan(lblTimeAlive); // old
    lblTimeAlive.Text = timeSpan.ToString(); // new

然后微调timeSpan的字符串格式。

【讨论】:

谢谢!那个人在纠缠我做作业(发誓不是!)我只是想为母亲节创建一个程序!谢谢你的帮助。我现在可以做我想做的所有其他事情。 @JeffOrris:没问题。就像我经常说的,如果是为了你的作业,那是你的损失。这个想法不是要学习在你作为学生使用的特定语言/API/框架中有意义的细节,而是要学习如何批判性思考和如何学习——通过某些改变来茁壮成长,这些改变将取代细节新的。不过,我会相信你的话。 ;) 不幸的是,“最后一步”是不可能的。一年不是一个固定的时间段,它还取决于您使用的日历。

以上是关于在 C# WinForm 中计算存活年数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#,Winform - 创建 PDF [重复]

Visual Studio c# winform打开链接[重复]

C# winform如何计算控件上文字的实际宽度(像素)

使用全屏 winform C# 我需要忽略所有用户输入 [重复]

C# winform datagridview如何计算统计

C# Winform DataTable 怎么过滤两列不重复