计算公历

void GregorianDay(struct rtc_time * tm)
{
int leapsToDate;
int
lastYear;
int day;
int MonthOffset[] = {
0,31,59,90,120,151,181,212,243,273,304,334 };

lastYear=tm->tm_year-1;

/*计算从公元元年到计数的前一年之中一共经历了多少个闰年*/
leapsToDate = lastYear/4 - lastYear/100 +
lastYear/400;

/*如若计数的这一年为闰年,且计数的月份在2月之后,则日数加1,否则不加1*/
if((tm->tm_year%4==0)
&&
((tm->tm_year%100!=0) || (tm->tm_year%400==0))
&&
(tm->tm_mon>2)) {
/*
* We are past Feb. 29 in
a leap year
*/
day=1;
} else {
day=0;
}

day += lastYear*365 + leapsToDate + MonthOffset[tm->tm_mon-1] +
tm->tm_mday; /*计算从公元元年元旦到计数日期一共有多少天*/

tm->tm_wday=day%7;
}

时间: 2024-11-08 22:16:20

计算公历的相关文章

LED时钟|语音同步LED时钟农历计算代码(立显光电)

LED时钟|语音同步LED时钟农历计算代码由深圳市立显光电有限公司技术部提供,欢迎指正,谢谢! void Lunar_Calculation(void){ unsigned char  temp1,temp2,temp3,month_p;    unsigned int temp4,table_addr; unsigned char flag2,flag_y; unsigned char year=time_buf[1];//阳历年 unsigned char month=time_buf[2]

PHP 农历公历互转,八字排盘,星座,日历,支持从-1000到3000年间的排盘,二十四节气

<?php /** * @author szargv@wo.cn * * 此日历转换类完全源于以下项目,感谢这两个项目作者的无私分享: * https://github.com/nozomi199/qimen_star (八字排盘,JS源码) * http://www.bieyu.com/ (详尽的历法转换原理,JS源码) * * 我們現在所使用的以西元年月日表示的格里高利历(Gregorian calendar) * 儒略日历(Julian day),以西元前4713年(或-4712年)1月1

LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序

/* 程序名:   LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序 编写时间: 2015年10月4日 硬件支持: LCD1602液晶屏  STC12C5A60S2 外部12MHZ晶振  接线定义:   DB7 --> P1^7              DB6 --> P1^6              DB5 --> P1^5              DB4 --> P1^5              RS  --> P3^2;  

时间转换与星期推算(Matlab版)

1 概述 最近在学习GPS解算算法时需要在GPS时(GPS周和周内秒)和公历日期之间进行转换,于是就整理了一些时间转换的小程序. 本文介绍了GPS时.公历.儒略日(JD).简化儒略日(MJD)之间的转换函数. gps2cal 将GPS周和周内秒转换到公历时间 gps2cal1 由公历日期和GPS周内秒计算公历时间 cal2gps 将公历GPS时间转换到GPS周和周内秒 mjd2cal 将简化儒略日转换到公历时间 cal2mjd 将公历时间转换到简化儒略日 jd2cal 从儒略日计算公历时间 ca

在线万年历

在线万年历 1.概述 在计算机没有普及的年代,要查找多年前某天对应的农历日期,就不得不翻阅一本厚厚的万年历进行查询.如今,随着计算机网络的普及,只要利用任意搜索引擎搜索“在线万年历”就可以搜索出很多功能强大的万年历.本实例向大家介绍的是在线万年历的实现过程,通过本程序可以查询从1901年到2049年中任何一天的具体的农历日期.节日.星期等信息.在线万年历可以作为一个单独的程序来运行也可以嵌套在某网站中作为一个子模块来实现.例如将在线万年历系统嵌套在留言板模块中,在“备忘录”子模块中添加万年历功能

农历03__ZC

代码,改自 农历01(http://www.cnblogs.com/cppskill/p/5930558.html) 1.main.cpp #include "Lunar_ZC.h" #include <stdio.h> void main() { //WORD iYear = 2016, iMonth = 10, iDay = 16; //WORD iYear = 1903, iMonth = 5, iDay = 27; // 阴历为 1903年5月初一 WORD iYe

农历01

1.NongLi.cpp // NongLi.cpp : Defines the entry point for the console application. // #include <stdio.h> #include "xDate.h" // http://www.chinapyg.com/forum.php?mod=viewthread&tid=2928 int main(int argc, char* argv[]) { xDate *dateX = n

一个比较全的C++农历算法(转)

这以前本是一个MFC代码,我在这个基础上修改成了标准C++的.. 即可以在VC里用,也可以在C++Builder里用..所以一并放到这里来, 希望有人喜欢..喜欢的就给点鼓励啊~~ 示例代码: 代码: void __fastcall TForm1::Button1Click(TObject *Sender) { xDate *Date_x=new xDate();//取系统时间初始化-:) Memo1->Lines->Add("公历"+IntToStr(Date_x->

JAVA基础语法练习(三)

训练案例1 训练描述 定义一个方法 能接受一个整数(这个整数大于3)打印0到这个整数(包含)之间的所有的偶数 如 接受的数字是6则调用完方法打印出来的偶数是 0 2 4 6 如 接受的数字是 5则调用完方法打印出来的偶数是 0 2 4 操作步骤描述 • 创建一个测试类,在测试类中创建上述方法 • 定义一个无返回值,有参数的方法 • 在方法内部把符合条件的数字打印 • 在主方法中调用这个方法,并传入数字15进行测试 训练案例2 训练描述 随机产生两个整数,随机数的范围均是[1,100],定义方法求