C语言求两个日期相差的天数

C语言求两个日期相差的天数,第1张

计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。

要考虑闰年的情况,判断闰年的口诀: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两个日期之间相隔天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9352725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存