vc 获取月份的天数_根据距离1900年1月1日的天数(0起始),计算这一天的日期(年,月,日)…

vc 获取月份的天数_根据距离1900年1月1日的天数(0起始),计算这一天的日期(年,月,日)…我的代码,算法不优美,但结果正确^_^#include#include#includevoidfoo(int&year,int&month,int&day){year=1900;month=1;day+=0;for(intn;n=(((year%4==0&&year%100!=0)||(year%400==0))…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我的代码,算法不优美,但结果正确 ^_^

#include

#include

#include

void foo( int& year, int& month, int& day )

{

year = 1900;

month = 1;

day += 0;

for( int n; n=(((year%4==0 && year%100!=0)||(year%400==0))?366:365), day>=n; day-=n, ++year );

static int m[12] = { 31,0,31,30,31,30,31,31,30,31,30,31 };

m[1] = ( ((year%4==0 && year%100!=0)||(year%400==0)) ? 29 : 28 );

for( int i=0; day>=m[i]; day-=m[i], ++i, ++month );

++day;

}

int main()

{

for( int i=25567; i<=38555; ++i ) // 从1970/01/01测试到2005/07/24

{

int year;

int month;

int day = i;

foo( year, month, day );

printf( “%04d/%02d/%02d — “, year, month, day );

time_t t1 = (i-25567)*24*3600;

tm* t2 = gmtime( &t1 );

printf( “%04d/%02d/%02d\n”, t2->tm_year+1900, t2->tm_mon+1, t2->tm_mday );

if( year!=t2->tm_year+1900 || month!=t2->tm_mon+1 || day!=t2->tm_mday )

{

printf( “ERR: %d\n”, i );

_getch();

}

}

return 0;

// ABB中 38555 输出为 2005/7/22

// 事实上应该输出为 2005/7/24

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170090.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号