mojinpan 发表于 2011-3-15 08:34:36

mark

madridlin 发表于 2011-3-15 09:13:26

mark

xiaoyigechaos 发表于 2011-3-22 22:33:30

好   最近要用

ilikerome 发表于 2011-3-22 23:56:49

if( year> 0 )
            year--;
      else
            year = 4;

什么意思?year 当然大于0,那这个if还有必要?

hsztc 发表于 2011-3-23 00:14:56

year是一个单字节的数,2000年用0表示,2001年用1表示,2099年用99表示,所以year有可能等于0(2000年),而不大于0.

sunnyhook 发表于 2011-4-12 14:07:24

28楼那个最好!

eryueniao 发表于 2011-4-13 14:57:44

哈哈   厉害

292302877 发表于 2011-4-15 22:36:24

MARK 标记一下

number007cool 发表于 2011-4-17 20:11:26

牛人!

dhy13 发表于 2011-4-17 21:16:48

不错~mark一下~

215661599 发表于 2011-4-18 19:54:38

这个我要收藏了!

wangle315065 发表于 2011-4-18 19:59:53

mark

cunlingwang 发表于 2011-4-28 12:09:55

厉害呀!

kerrwang1982 发表于 2011-4-28 12:30:19

好贴。

Name_006 发表于 2011-4-28 14:27:39

标记下吧

mook_dj 发表于 2011-4-29 12:08:35

先记下,再试

love_zjb 发表于 2011-4-29 12:22:14

mark

TFTscreen 发表于 2011-4-29 12:43:47

路过,支持一下!

kbdcj2000 发表于 2011-4-29 13:37:53

mark

STC89C55 发表于 2011-4-29 14:07:39

好啊……

zhouyafeng 发表于 2011-4-29 21:49:17

MARK~~~

3050311118 发表于 2011-5-16 22:27:27

mark

pancake 发表于 2011-5-17 18:52:24

good

wzq666 发表于 2011-5-17 19:06:47

这好像学过,是数学知识

MZMMZMMZM 发表于 2011-5-17 19:35:56

MARK

CarlLee 发表于 2011-5-17 20:17:00

mark,有空看

wenjin0386 发表于 2011-5-17 20:18:29

mark

WillFeng 发表于 2011-5-17 20:42:26

mark

10086 发表于 2011-5-19 18:49:17

收下了

qhshilin 发表于 2011-5-19 19:47:46

mark!

hanhuliang 发表于 2011-5-19 20:27:22

mark

xiaotanlan 发表于 2011-5-21 15:40:25

把楼主位和28楼的算法分别标记为算法一和算法二,用VB做了个简单的计算小软件,发现怎么两个算法对有些日期算的不一样,大家都验证过了吗?我怎么算的有些不对呢。
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641790JJ9YYV.jpg
(原文件名:????????.jpg)


计算小软件:点击此处下载 ourdev_641791XENNAG.rar(文件大小:4K) (原文件名:????????.rar)


软件没有加日前限定的功能,大家输的时候自己注意不要超出注释范围边界
日期范围注释为1~31

ljqlaq 发表于 2011-5-21 16:54:11

这个要顶。。。

xtx8962 发表于 2011-5-21 17:44:05

留个记号

zzh90513 发表于 2011-5-21 19:34:27

comway 发表于 2011-5-22 09:27:37

1+(( day + 2*month + 3*(month+1)/5 + year + year/4 ) %7),要再算上year%400就可以做到上下五千年了

jeazen 发表于 2011-5-24 22:28:39

mark,3q

psocfans 发表于 2011-5-24 22:37:20

mark

renwocai 发表于 2011-9-21 16:23:11

MARK

rafd 发表于 2011-9-21 16:44:27

收藏了

mvip 发表于 2011-9-21 17:13:11

收藏mark

nonez 发表于 2011-9-21 18:35:24

收藏了

tangxh 发表于 2011-9-21 18:45:17

刚好用到了收藏

scbing 发表于 2011-9-22 16:36:15

mark

NJ8888 发表于 2011-9-22 16:38:26

快2012了

hwxxp 发表于 2011-9-22 19:43:12

学习了

Tankng 发表于 2011-9-23 17:10:56

MARK

ustbzm 发表于 2011-9-23 17:22:05

很好,不错啊!

xibuol 发表于 2011-9-23 20:47:46

标记标记,谢谢了

hzc171 发表于 2011-9-24 19:33:03

M

q451993547 发表于 2011-9-25 16:54:19

mark

liushaozhen007 发表于 2011-9-28 14:00:20

程序简单,赞!

badodo 发表于 2011-10-12 22:36:47

mark

hsy168 发表于 2011-11-11 08:55:35

mark

jyjmaster 发表于 2011-11-11 09:17:49

MARK

chenqi 发表于 2011-11-11 10:34:24

mark

wjchao 发表于 2011-11-11 11:22:10

mark

BXAK 发表于 2011-11-11 12:12:33

计算2000~2099年任一天是星期几

wuguoyan 发表于 2011-11-11 13:01:23

mark

sfp208 发表于 2011-11-11 14:34:39

mark一下,嘿嘿

dragonfling 发表于 2011-11-11 15:32:41

刚才学习了下万年历算法,上边提到的算法2,再加个日期是否润年且月份小于3的判断的判断就完美了,如上述条件成立所算星期减1,否则不变!

Pony279 发表于 2011-11-12 02:59:32

mark~
顺便支持50楼~

xizi 发表于 2011-11-12 04:35:40

50楼+176楼,够强。

justSaar 发表于 2011-11-12 08:44:29

计算2000~2099年任一天是星期几 MARK

changhui0222 发表于 2011-11-12 08:45:17

MARK!

dhbighead 发表于 2011-11-12 10:27:28

MARK

1031706774 发表于 2011-11-12 10:41:44

学习了。。。

wpnx 发表于 2011-11-12 10:43:01

mark

bigwolf_chen 发表于 2011-11-12 11:07:53

mark

myfmfav 发表于 2011-11-30 00:57:20

很好很强大啊

tianheiGE 发表于 2011-11-30 08:29:25

强大,正用的上

XA144F 发表于 2011-11-30 09:05:07

这是我再几天前给单片机写一个时钟程序中自己设计的成,原来是计算过去了多少天的,当然也可以顺便计算是星期几。

相信大家一看就明白:
编译器CV2.04.4
flash int8u M_D3={0,31,28,31,30,31,30,31,31,30,31,30,31};   //平年

//计算YY年MM月DD日是星期几
int8u CALC_WEEK(int8u YY,int8u MM,int8u DD)
    {
      unsigned int sum;
      int8u i,k;
      sum=0;
      for(i=0;i<YY;i++)   //从2000年开始计算
            {
                sum+=365;
                if((i%4)==0)    //闰年修正,多一天
                  {
                        sum+=1;
                  }
            }
      for(i=1;i<MM;i++)       //计算当前年过去月份中的天数
            {
                sum+=M_D3;
            }
      sum+=DD;            
      sum-=1;
      if(((YY%4)==0)&&(MM>2))    //闰年修正,3月后多一天
            {
                sum+=1;
            }
      k=(sum%7+6)%7;      //2000年1月1日是星期六,sum是过去的天数
      return k;             //返回的k就是星期数
    }

sum最大值为65536,按照一年366天计算可以计算179年,所以能计算2000~2179年的任意一天的星期数。当然前提是地球自转公转是不变的。但实际上因为引力波造成的动能损失,这些速度都在减慢。

kerrwang1982 发表于 2011-11-30 09:27:39

回家用51试试,在单位用excel模拟太费劲了。

nangehongfei 发表于 2011-11-30 09:29:07

好东西呵呵

z421868436 发表于 2011-11-30 10:00:43

mark

renwocai 发表于 2011-11-30 13:08:08

记号

aidianzio 发表于 2011-11-30 13:49:40

标记。。。要用到了。。。

callbingover 发表于 2011-11-30 14:53:55

实用,好东东!

zhaoliang056 发表于 2011-11-30 17:03:38

mark

xyang18 发表于 2011-11-30 17:26:35

mark

CK345 发表于 2011-11-30 20:02:26

mark

yifeng009 发表于 2011-11-30 21:29:35

牛人辈出。。。

lin562794072 发表于 2011-11-30 21:43:19

都是牛人啊。

lklon 发表于 2011-11-30 22:57:08

留记号

chenxiaojun 发表于 2011-11-30 23:43:11

学习了

grantzhao 发表于 2011-11-30 23:46:27

没有最强,只有更强!

614229816 发表于 2011-12-9 07:57:52

回复【楼主位】hexixiaomao猫云澜
-----------------------------------------------------------------------

这个在网上收收能找到,其实它满足0000-9999年。

hnsfdxtanghao 发表于 2011-12-18 21:42:42

mark

Cannot_Make_It 发表于 2011-12-21 22:32:38

都很强呀

myfmfav 发表于 2012-1-11 15:51:29

回复【28楼】wqsjob
-----------------------------------------------------------------------

2012年1月11号是星期几?用你的算法(6+WeekData+year+day+year/4)%7;
                        uchar      WeekData[]={0,3,3,6,1,4,6,2,5,0,3,5};

myfmfav 发表于 2012-1-11 15:58:46

回复【30楼】wisebaby 明君
-----------------------------------------------------------------------

简单是简单 但是有BUG 用他的算法算算2012年1月11号是星期几?

77695 发表于 2012-1-11 16:59:24

mark

Super_C 发表于 2012-1-12 11:45:04

mark.

ubuntuman 发表于 2012-1-12 13:01:19

mark

chenguanghua 发表于 2012-1-12 13:17:47

mark

o11o 发表于 2012-1-12 14:32:44

MARK:一个非常简洁的 程序 计算2000~2099年任一天是星期几

zl_123 发表于 2012-1-12 23:48:43

mark

xicheng412 发表于 2012-1-13 14:46:48

28楼的程序也很好,并且可以扩展到更大的范围。只要更多的预存数据就可以了。

uchar      WeekData[]={0,3,3,6,1,4,6,2,5,0,3,5};
/*2000-2099*/
unsigned char GetWeekDay(unsigned char year,unsigned char month,unsigned char day)
{
      return      ((6+WeekData+year+day+year/4)%7);
}

liu123748 发表于 2012-1-14 17:03:58

bucuo o

kang732816702 发表于 2012-1-16 10:04:41

多谢楼主,留个记号
页: 1 2 3 [4] 5
查看完整版本: 一个非常简洁的 程序 计算2000~2099年任一天是星期几【恢复】