chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

C++的年积日计算程序

已有 9780 次阅读 2014-8-10 09:52 |个人分类:地球科学|系统分类:科研笔记

最近在做GRACE的时间序列分析时,需要按年为单位进行,但是CSR、GRGS、GFZ和JPL等机构提供的数据时间都是年月日,需要大量转换,用着实在不方便,就自己写了一个计算年积日的程序,和大家分享一下:

//计算年积日

double Doy(double time)

{

//time的格式20020405

int year=(int)(time/10000);

int month=(int)((time-year*10000)/100);

int day =(int)(time-year*10000-month*100);

int sum=0,leap,totalday=365;;


switch(month) /*先计算某月以前月份的总天数*/

{

  case 1:sum=0;break;

  case 2:sum=31;break;

  case 3:sum=59;break;

  case 4:sum=90;break;

  case 5:sum=120;break;

  case 6:sum=151;break;

  case 7:sum=181;break;

  case 8:sum=212;break;

  case 9:sum=243;break;

  case 10:sum=273;break;

  case 11:sum=304;break;

  case 12:sum=334;break;

  default:printf("data error");break;

}

sum=sum+day; /*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/

  leap=1;

else

  leap=0;

if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/

{

  sum++;totalday=366;

}

double doy=double(sum)/double(totalday);


return doy+year;

}




https://wap.sciencenet.cn/blog-858128-818446.html

上一篇:VS2010+GSL的使用
下一篇:GRACE数据反演地表垂直变形
收藏 IP: 111.173.80.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 01:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部