两个日期相减 得到 月数 和 畸零天数 终止日期 - 起始日期 怎样快速得到 相差的月数 和 畸零天数就是说 终止日期 - 起始日期 = XX月XX天 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TimeSpan _Span = new DateTime(2010, 4, 22) - new DateTime(2010, 3, 10); MessageBox.Show((_Span.Days / 30).ToString()+ "月" + _Span.Days % 30 + "天"); 去好好查看一下msdn吧,http://topic.csdn.net/u/20091113/10/304a9847-4645-404b-89ab-3d9a03e26739.html 不知道什么地方用这个,一般用TimeSpan就行,月是不定的·感觉这个功能有点那个· 我是新得不能再新的新手,尝试写写权当自己练手。不规格地方请指明using System;using System.Collections.Generic;using System.Text;namespace Test{ class Program { static void Main(string[] args) { DateTime tmBegin = new DateTime(2009, 11, 11); DateTime tmEnd = new DateTime(2010, 1, 10); int y, m, d; TimeSpan ts; DateTime newBeg; y = tmEnd.Year; m = (tmEnd.Year - tmBegin.Year) * 12 + tmEnd.Month - tmBegin.Month; if ((int)tmEnd.Day >= (int)tmBegin.Day) { d = tmEnd.Day - tmEnd.Day; } else { m -= 1; if ((int)tmEnd.Month == 1) { int newM; y -= 1; newM = 12; newBeg = new DateTime(y, newM, tmEnd.Day); } else { newBeg = tmEnd.AddMonths(-1); } ts = tmEnd - newBeg; d = (int)ts.TotalDays-1; } Console.WriteLine("相差{0}个月外加{1}天", m.ToString(),d.ToString()); Console.ReadKey(); } }} 你好!你可以参考我在下面地址的回复:http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/08290297-26d0-420f-ae02-af0afd9467b9 private string DateDiff(DateTime DateTime1,DateTime DateTime2) { string dateDiff=null; try { TimeSpan ts1=new TimeSpan(DateTime1.Ticks); TimeSpan ts2=new TimeSpan(DateTime2.Ticks); TimeSpan ts=ts1.Subtract(ts2).Duration(); dateDiff=ts.Days.ToString()+"天" +ts.Hours.ToString()+"小时" +ts.Minutes.ToString()+"分钟" +ts.Seconds.ToString()+"秒"; } catch { } return dateDiff; }Int32 days =(Int32) ((TimeSpan)(dt1- dt2)).TotalDays; MessageBox.Show(days.ToString()); TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan 谢谢各位,我的函数如下,请指教: /// <summary> /// 两个日期相减 得到 月数 和 畸零天数 /// </summary> /// <param name="start"></param> /// <param name="end"></param> /// <returns></returns> private static string DateDiff(DateTime start, DateTime end) { string dateDiff = null; try { DateTime end1; int date = (end - start).Days; int date1 = 0; if (start.Day <= end.Day) { end1 = new DateTime(end.Year, end.Month, start.Day); } else { end1 = new DateTime(end.Year, end.Month - 1, start.Day); } date1 = (end1 - start).Days; dateDiff = ((end1.Year - start.Year) * 12 + end1.Month - start.Month).ToString() + ";" + (date - date1).ToString(); } catch (Exception ex) { dateDiff = null; } return dateDiff; } lz,如果日期是 start 2010-01-02 end 2010-02-01按着你的算法得到的结果是 1;-1 是差一天不到一个月。正常的结果应该是 0:30; 对着呀,吓我一跳,刚debug了下,就是0;30 使用ADO.NET什么时候需要加上con.Open()啊? 源码是否有错 为什么绑定在dataGridView上点一次,dataGridView没有保留上次的内容 请问水晶报表能自适应能行高吗?? C# 执行顺序 的问题 show dialog 问题 对VC/MFC或.Net/C#感兴趣吗? cookie问题 请教一个数据转换的问题 如何获取Datalist中RadioButtonList控件并取出他的值? 在类库中怎么实现计时功能 C#中internal关键字有什么用?弄个实例过来看看,谢谢。
MessageBox.Show((_Span.Days / 30).ToString()+ "月" + _Span.Days % 30 + "天");
http://topic.csdn.net/u/20091113/10/304a9847-4645-404b-89ab-3d9a03e26739.html
using System.Collections.Generic;
using System.Text;namespace Test
{
class Program
{
static void Main(string[] args)
{
DateTime tmBegin = new DateTime(2009, 11, 11);
DateTime tmEnd = new DateTime(2010, 1, 10); int y, m, d;
TimeSpan ts;
DateTime newBeg; y = tmEnd.Year;
m = (tmEnd.Year - tmBegin.Year) * 12 + tmEnd.Month - tmBegin.Month;
if ((int)tmEnd.Day >= (int)tmBegin.Day)
{
d = tmEnd.Day - tmEnd.Day;
}
else
{
m -= 1;
if ((int)tmEnd.Month == 1)
{
int newM;
y -= 1;
newM = 12;
newBeg = new DateTime(y, newM, tmEnd.Day);
}
else
{
newBeg = tmEnd.AddMonths(-1);
}
ts = tmEnd - newBeg;
d = (int)ts.TotalDays-1;
}
Console.WriteLine("相差{0}个月外加{1}天", m.ToString(),d.ToString());
Console.ReadKey();
}
}
}
{
string dateDiff=null;
try
{
TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
TimeSpan ts=ts1.Subtract(ts2).Duration();
dateDiff=ts.Days.ToString()+"天"
+ts.Hours.ToString()+"小时"
+ts.Minutes.ToString()+"分钟"
+ts.Seconds.ToString()+"秒";
}
catch
{ }
return dateDiff;
}Int32 days =(Int32) ((TimeSpan)(dt1- dt2)).TotalDays;
MessageBox.Show(days.ToString());
/// 两个日期相减 得到 月数 和 畸零天数
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
private static string DateDiff(DateTime start, DateTime end)
{
string dateDiff = null;
try
{
DateTime end1;
int date = (end - start).Days;
int date1 = 0; if (start.Day <= end.Day)
{
end1 = new DateTime(end.Year, end.Month, start.Day);
}
else
{
end1 = new DateTime(end.Year, end.Month - 1, start.Day);
} date1 = (end1 - start).Days; dateDiff = ((end1.Year - start.Year) * 12 + end1.Month - start.Month).ToString() + ";" + (date - date1).ToString();
}
catch (Exception ex)
{
dateDiff = null;
} return dateDiff;
}
按着你的算法得到的结果是 1;-1 是差一天不到一个月。
正常的结果应该是 0:30;