使用C#,如何开发一个程序,计算两个日期之间的时长,必须精确到年月日时分秒

比如一个倒计时程序需要显示年月日时分秒的具体时间或者一个计算已经经过多少时间的程序,必须显示为年月日时分秒。... 比如一个倒计时程序 需要显示年月日时分秒的具体时间 或者一个计算已经经过多少时间的程序,必须显示为年月日时分秒。 展开
 我来答
0选择人生0
2014-08-08 · 超过11用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:27.2万
展开全部

效果图:



源代码:

-------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace 百度问题_计算两个日期之间的时长

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            DateTime d1 = dateTimePicker1.Value;

            DateTime d2 = dateTimePicker2.Value;

            TimeSpan d3 = d2.Subtract(d1);

            label1.Text = "相差:"

            + d3.Days.ToString() + "天"

            + d3.Hours.ToString() + "小时"

            + d3.Minutes.ToString() + "分钟"

            + d3.Seconds.ToString() + "秒";

        }


        private void Form1_Load(object sender, EventArgs e)

        {

            dateTimePicker1.Format = DateTimePickerFormat.Custom;

            dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm:ss";

            dateTimePicker2.Format = DateTimePickerFormat.Custom;

            dateTimePicker2.CustomFormat = "yyyy-MM-dd HH:mm:ss";

        }

    }

}

-------------------------------------------------------------------


还是有点bug,刚刚有点事,没来得及做

更多追问追答
追问
在线等
追答
你可以通过天数,来制造出年月日来。。即0年0月0日开始加。或者,就是用天数,因为要用年月日的话,还要考虑到月份,大月小月的问题。润年,不是润年的问题。一般来说,时间差,没有用年月日来表示的吧。或者用年,或者用月(默认30天),或者用天数,或小时,等。。。
对了,可以通过直接修改上面的数据来完成操作,不用下拉菜单选择日期。
Headcrabbed
2014-08-08
知道答主
回答量:6
采纳率:0%
帮助的人:5万
展开全部

使用 DateTime.ToString() 方法。

默认情况下,

DateTime.ToString()

会按照当期的区域设置(culture)输出字符串,在中文 Windows 上通常是形如 2000-01-01 00:00:00 的形式(长日期,长时间)。

示例:

DateTime dt = DateTime.Now;
System.Diagnostics.Debug.Print(dt.ToString());

另一个重载

DateTime.ToString(string format)

会按照格式字符串输出。格式字符串类似 VB 的格式,例如 yyyy-mm-dd hh:mm:ss 输出形如 2000-01-01 00:00:00。

示例:

DateTime dt = DateTime.Now;
System.Diagnostics.Debug.Print(dt.ToString("yyyy-mm-dd hh:mm:ss"));

如果需要更高级的控制,可以使用

DateTime.ToString(IFormatProvider provider)

等等方法。


如果希望计算日期差值,可以用两个 DateTime 作差,结果是 TimeSpan 类型。TimeSpan 的 ToString() 方法重载类似 DateTime;当然,也可以使用 TimeSpan 的各个属性加上 string.Format() 来实现格式化输出。

例如:

var target = new DateTime(2015, 1, 1, 0, 0, 0);    // 2015-01-01 00:00:00
var now = DateTime.Now;
var delta = target - now;
System.Diagnostics.Debug.Print(delta.ToString());

将这段代码放在计时器回调函数(或者事件处理函数)中即可以实现倒计时。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式