计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
网上找了一个(偷懒= =!),修改下如下:
#include <stdioh>
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;i<y;i++)
if(i%4==0 && i%100!=0 || i%400==0)
s+=366;//闰年
else
s+=365;//平年
if(y%4==0 && y%100!=0 || y%400==0)
x[2]=29;
for(i=1;i<m;i++)
s+=x[i];//整月的天数
s+=d;//日的天数
return s;//返回总天数,相对公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf("输入第一个年 月 日:");
scanf("%d %d %d",&y1,&m1,&d1);
printf("输入第二个年 月 日:");
scanf("%d %d %d",&y2,&m2,&d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 > s2)
printf("相差天数:%ld\n",s1-s2);
else
printf("相差天数:%ld\n",s2-s1);
}
以上代码VC6编译测试通过。
虽然这个思路显得有些笨,但是其它算法,代码太长太复杂,要考虑多种情况,不如直接算两个日期距离公元元年1月1日的天数,然后相减
=IF(DAY(TODAY())>20,TODAY()-DATE(YEAR(TODAY()),MONTH(TODAY()),20),TODAY()-DATE(YEAR(TODAY()),MONTH(TODAY())-1,20))
不愿意扳着手指或拿着月历表一天一天的数吧,用Excel可以很轻松地计算出两个时间的天数差。本例介绍如何在excel中计算日期和时间,包括两个日期之间的天数、时间之间的差和显示样式。
首先,计算两个日期之间的天数。
在excel中,两个日期直接相减就可以得到两个日期间隔的天数,如下图:
计算两个日期之间的天数,也可以用隐藏函数DATEDIF函数来完成,公式如下:
=DATEDIF(A2,B2,"d")
DATEDIF()函数知识点介绍:
这个函数语法是这样的:=DATEDIF(开始日期,结束日期,第三参数),第三参数可以有若干种情况,分别可以返回间隔的天数、月数和年数。
下面再来看一下如何计算时间。
首先,最简单的是两个时间直接相减即可得到时间差。但是注意,存储结果的单元格要设置成时间格式。
上面的例子是未超过1天的时间,如果超过1天的时间利用上述的方法直接相减会得到什么结果呢
上面的例子更常出现于考勤表的时间计算,由于两个日期可能跨越2天或者更长时间,默认显示结果不正确,需要通过设定单元格格式的方法来显示正常的时间差。如下图设置单元格格式为“[h]:mm:ss”,其中h加上方括号可以将时间的差小时数完全显示,如果不加方括号只能显示扣除天以后的小时之差。
如果想将时间差的天数和时间都显示出来,可以设置单元格格式为:
小提示:
上面所述的时间和日期相减都需要用大的减去小的,否则就会出现预期外的错误。
以上就是excel函数计算两个日期之间天数和时间计算的方法,谢谢大家一如既往的支持。
首先你输入日期的格式不对,应该输入 2007-01-31 (日期格式)
然后再A2输入公式 =DATEDIF(TODAY(),A1,"d") ,求得相差天数27天
或者公式 =A1-today()
如果你的日期非得是20070131,则输入下列公式:
=DATEDIF(TODAY(),DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2)),"d")
或者
=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))-TODAY()
如何用excel函数计算两个日期之间相差的天数、月数和年数,下面就为大家介绍一下,来看看吧!
假设问题
假设有个人出生于1949年10月1日(起始日期),他想计算到2015年10月5日(结束日期)也就是昨天,他几岁了,或者活了多少天(要计算的期间数)。
计算天数方法1
两日期格式数值相减,结束日期-开始日期。
计算天数方法2
使用函数DAYS(结束日期,开始日期)。
计算天数方法3
使用函数DATEDIF(开始日期,结束日期,“期间数类型”)。其中“期间数类型”为“Y”表示整年数;为“M”表示整月数;为“D”表示天数。
DateDiff 函数
返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
语法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函数语法中有下列命名参数:
部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
设置
interval 参数的设定值如下:
设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
firstdayofweek 参数的设定值如下:
常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
常数 值 描述
vbUseSystem 0 用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。
以上就是关于C语言求两个日期相差的天数全部的内容,包括:C语言求两个日期相差的天数、excel,用公式得到当前日期与每个月固定的一天之间相差的天数。详细如下所述。、excel两个日期之间相隔天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)