使用C#,如何开发一个程序,计算两个日期之间的时长,必须精确到年月日时分秒
效果图:
源代码:
-------------------------------------------------------------------
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天),或者用天数,或小时,等。。。
对了,可以通过直接修改上面的数据来完成操作,不用下拉菜单选择日期。
使用 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());
将这段代码放在计时器回调函数(或者事件处理函数)中即可以实现倒计时。