社区
C#
帖子详情
怎么计算两个DateTime变量之间相差多少个月阿
yzxdc
2004-09-09 12:15:47
怎么计算两个DateTime变量之间相差多少个月阿?用Subtract只能换算到天
...全文
1171
26
打赏
收藏
怎么计算两个DateTime变量之间相差多少个月阿
怎么计算两个DateTime变量之间相差多少个月阿?用Subtract只能换算到天
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzxdc
2004-09-09
打赏
举报
回复
感谢大家回答我的问题,不过这里我要求的是自然月(有多余的天一律舍去),也就是说也要考虑天的问题。
(DateTime1.Year-DateTime2.Year)*12+(DateTime1.Month-DateTime2.Month)这样是没法用的
但是一考虑天,就有(2-28)-(1-31)必须算一个月之类的麻烦了。
简单地说,我想要达到d2=d1.AddMonth(i),则subMonth(d2,d1)=i的效果,大家帮忙想想看这个subMonth有什么实现的方法
The123
2004-09-09
打赏
举报
回复
楼主也可以这样试试
先比较dt1,dt2的大小
假定dt1大。
if((dt1.Year-dt2.Year)==0)
dt1.Month-dt2.Month
else
dt1.Month-dt2.Month+(dt1.Year-dt2.Year)*12
The123
2004-09-09
打赏
举报
回复
恩, triout(笨牛) 是对的
我那个跨年就有问题了。
redlotoc
2004-09-09
打赏
举报
回复
up
jinglelin
2004-09-09
打赏
举报
回复
triout(笨牛) 的方法非常正确
(DateTime1.Year-DateTime2.Year)*12+(DateTime1.Month-DateTime2.Month);
阿云ivan
2004-09-09
打赏
举报
回复
UP
关注中……
bibi5211
2004-09-09
打赏
举报
回复
同意楼上的TimeSpan
triout
2004-09-09
打赏
举报
回复
最好的办法:
(DateTime1.Year-DateTime2.Year)*12+(DateTime1.Month-DateTime2.Month);
triout
2004-09-09
打赏
举报
回复
回复人: The123(在我地盤這 伱就得聽我的) ( ) 信誉:100 2004-09-09 12:20:00 得分: 0
DateTime dt1 ,dt2;
dt1.Month-dt2.Month
2004年1月和2003年12月,相差几个月?-11吗?
triout
2004-09-09
打赏
举报
回复
TimeSpan ts=DateTime1-DateTime2;
ts.TotalDays就是两个日期相差的天数,具体的月数就要计算了。
The123
2004-09-09
打赏
举报
回复
DateTime dt1 ,dt2;
dt1.Month-dt2.Month
sexfreebird
2004-09-09
打赏
举报
回复
我知道用VBScript可以很容易解决这个问题,例如:You have been a member for <%=DATEDIFF(“d”,startdate,enddate)%> days,那个“d”表示的是返回天数,还可以用其他字符表示返回秒,分什么的,如:yyyy 年、q 季度、mm 月、y 天、d 天、w 天、ww 星期、h 小时、m 分钟、s 秒。
ffb
2004-09-09
打赏
举报
回复
AddMonth(-1)
可以取得上一个月
hhhh63
2004-09-09
打赏
举报
回复
不知道楼主的这个问题是一个实际问题还是理论研究。
如果是实际问题的话比较好办,算出一个大概准确的值就行了,比如4.5个月算5个月,4.2个月算一个月。但我不太同意triout(笨牛)的算法
(DateTime1.Year-DateTime2.Year)*12+(DateTime1.Month-DateTime2.Month)
照这样 1月31号到2月1号 1月1号到2月28号都算一个月,不太妥,还是加上日子好点。
如果是理论研究的话就属于历法的范筹了,现行的历法可能没有加一个月和减一个月的标准,当然楼主可以自己定义一些规则。
“简单地说就是要考虑月底的事,比如(1-31).AddMonth(1) = (2-28),所以(2-28)-(1-31)就必须等于1。但是2-28是不是月底取决于2月是不是闰月,也就是说,不是闰月的话(2-28)-(1-31)=1,是的话就是0了”
把其它的情况都列出来,再归纳一下,转换成代码就行了。不过这些规则还有一个大家认可的问题。
yzxdc
2004-09-09
打赏
举报
回复
这个问题我在很前面的回复已经地提到了,老兄你非要我解释清楚吗
简单地说就是要考虑月底的事,比如(1-31).AddMonth(1) = (2-28),所以(2-28)-(1-31)就必须等于1。但是2-28是不是月底取决于2月是不是闰月,也就是说,不是闰月的话(2-28)-(1-31)=1,是的话就是0了
triout
2004-09-09
打赏
举报
回复
既然你是要两个日期的天数差折合成多少个月,那么:
如果你不考虑每个月的天数,就可以使用TimeSpan的方式:
TimeSpan ts=DateTime1-DateTime2;
int months=ts.TotalDays/30;
如果你要考虑到其中每个月的天数,就使用:
(DateTime1.Year-DateTime2.Year)*12+(DateTime1.Month-DateTime2.Month)
有什么问题?
或者,你会问:如果开始月头何结束月尾,该如何计算?这里只要你简单的判断:
DateTime1的Day何DateTime2的Day就简单搞定的问题了,只要:
DateTime1.Day-DateTime2.Day得到的数就可以判断,如果为0,上面的计算就刚好,否则就有差。
问题一定要问清楚,然后自己多动脑筋。我想给你的答案已经非常的清楚明白的了,只在你自己根据需要如何运用的问题。
已经告诉你1+1=2了,总不会再问1+2是多少吧/
yzxdc
2004-09-09
打赏
举报
回复
hhhh63兄说的对,看来没有什么现成的方法了,好像只能我自己写一个了。
yzxdc
2004-09-09
打赏
举报
回复
triout(笨牛) 兄还是没看请我的前提啊,“多余的天一律舍去”,也就是说我想知道的时两个日期间的天数差折合成月是多少个月。
hhhh63
2004-09-09
打赏
举报
回复
说说我的看法,每个月的天数不一定,要实现“d2=d1.AddMonth(i),则subMonth(d2,d1)=i的效果”是不可能的,如,1月31日加一个月等于什么?所以微软的TimeSpan中并没有月数的计算方法。
不过实际中有时要用到月数,如我做儿童能力测试软件中就是用月龄来计算的,用的方法是
(y2 - y1)*12 + (m2 - m1) + (d2 - d1)/30 并进行四舍五入,得到月龄。
不可能得到一个精确的月数,好在实际应用中也不要求太精确,找一个差不多的公式就行了。
triout
2004-09-09
打赏
举报
回复
靠,你要的是自然月,考虑月是多少天干吗?无论月是多少天,这个算法都是正确的,还有什么疑问?
或者,你说到闰月的问题,对于公历来说,只有闰年,何来闰月?莫非你要计算两个农历日期之间的月份差?那就另请高明了。
加载更多回复(6)
Python专题精讲 日期和时间的使用
实际项目开发中,到处都需要处理日期和时间,本课程针对python语言处理日期和时间的两个标准库time和
datetime
的知识进行了详细讲解,帮助学习者快速了解日期和时间使用的正确方法。 讲师经验丰富、课程内容充实、从...
python两个日期差几年_python
计算
两个日期
相差
多少个月
近期,由于业务需要
计算
两个日期之前
相差
多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块
计算
两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议。说句实在的,一直觉得python 的日期处理模块真心不好用。哦,对了,别跟我说
datetime
,calendar,dateutil 这些模块,因为我都试过了,都...
c#中,比较两个时间
相差
多少分钟
https://blog.csdn.net/ychxiaoyixiao/article/details/46380943 c#中,比较两个时间
相差
多少分钟
DateTime
date1 = new
DateTime
();
DateTime
date2 =new
DateTime
(); TimeSpan timeSpan = date2 - date1; Console.WriteLin...
C#
计算
两个日期
之间
相差
的天数
C#
计算
两个日期
之间
相差
的天数 private int DateDiff(
DateTime
dateStart,
DateTime
dateEnd) {
DateTime
start = Convert.To
DateTime
(dateStart.ToShortDateString());
DateTime
end = Convert.To
DateTime
(dateEnd.ToShortDateString()); ...
Python
计算
两个日期
相差
的天数
有时候需要算两个日期
相差
多少天,如果两个日期
相差
大,真的去数肯定很麻烦,还得
计算
有的是有三十天,有的是三十一天,还有闰年和平年的区别。而这时候如果有一个方法或者函数,只需要输入要
计算
的两个日期即可,那就方便快捷了很多。而Python正好可以提供这么一个方法函数,为什么选择Python,首先它的体积小,环境配置简单,其次配置了环境
变量
后,脚本可以像txt,word等一样独立运行。(代码所用的Pyth...
C#
110,548
社区成员
642,562
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章