廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 12029 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][精華] 萬年歷算星期的公式
求萬年歷算星期的公式...

<---看了這篇 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被codeboy在2005-06-05 13:02重新編輯 ]


獻花 x0 回到頂端 [樓 主] From:台灣 | Posted:2005-02-05 14:15 |
codeboy 手機
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x6 鮮花 x331
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

給你一個包裝好的函式~c++版的~
最後的傳回值 i 就是星期幾~表情

ps.回傳值為零..就是星期天~
複製程式
int Compute(int Year, int Month, int Day)
{
 int TempYear, TempMonth, i, j;

 if (Month >= 3)
    {
     TempMonth = Month - 2;
     TempYear = Year;
    }
 else
    {
     TempMonth = Month + 10;
     TempYear = Year - 1;
    }

 j = TempYear + (int)(TempYear / 4) - (int)(TempYear / 100) +
     (int)(TempYear / 400) + (int)(2.6 * TempMonth - 0.2) + Day;
 i = j - 7*(int)(j / 7);

 return (i);
}



[ 此文章被codeboy在2005-02-06 13:05重新編輯 ]

此文章被評分,最近評分記錄
財富:20 (by panasonic732)



連結有問題請來信,我會盡快修正~^^
通報時請附上是"哪一篇失效"...這樣我才能去修正~麻煩各位好心人士了~

[連結失效通報][ 網頁.伺服.程式 討論區]
----------------------在世界中心呼喊愛情----------------------
深深思念一個人的時候,我們不知不覺的地活在世界的中心...
獻花 x0 回到頂端 [1 樓] From:台灣 | Posted:2005-02-05 20:01 |
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感恩拉....

小第我數學很濫....QQ

有公式還是看不懂....>"<

謝謝大大的指教...^^


獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2005-02-06 19:06 |
codeboy 手機
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x6 鮮花 x331
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

哪裡看不懂~要不要說一下~
這樣比較知道怎幫你~ 表情
共同勉勵~



連結有問題請來信,我會盡快修正~^^
通報時請附上是"哪一篇失效"...這樣我才能去修正~麻煩各位好心人士了~

[連結失效通報][ 網頁.伺服.程式 討論區]
----------------------在世界中心呼喊愛情----------------------
深深思念一個人的時候,我們不知不覺的地活在世界的中心...
獻花 x0 回到頂端 [3 樓] From:台灣 | Posted:2005-02-06 19:12 |
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用codeboy於2005-02-6 19:12發表的 :
哪裡看不懂~要不要說一下~
這樣比較知道怎幫你~ 表情
共同勉勵~


http://www.geocities.com/c...ofweek.htm   <----這ㄍ網頁....

Zeller's公式

給任何一個格勒哥里曆的日期(1583年10月15日以後),可以算出當日是星期幾。方程式如下:

W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7

註解:

i)   除數時只取整數,捨棄點數。

ii) D = 日

iii) M = 月號 (3月=1,4月=2 ‧‧‧‧12月=10,1月=11,2月=12)

iv) C = 年份數字中代表世紀的頭兩個位數,例如2005年的20。

v)   Y = 年份數字後兩個位數,如果是1或2月,M=11或12而Y則要減1。上述法則可以用以下公式表達:

a = (14–月份)/12   (月份:1月等於1,2月等於1,3月等於3‧‧‧‧11月等於11,12月等於12)

Y =Y - a

M = 月份 + 12a – 2

vi) Mod 7是將總和除以7,取餘數。

vii) 餘數W = 0代表星期日,1代表星期一,2代表星期二,‧‧‧‧。

在紅色字的第二段...

就是怎ㄇ都搞不懂...位捨ㄇ要這樣算.....

就是卡在這裡...想很久...舊不知道該怎ㄇ寫...QQ   也看不懂....>"<

以前用組合語言....室友寫過一ㄍ....那時候...是自己算的....

才知道...國曆星期的部分是28年倫依次....

最近在網路上看到這篇文章.....

發現到...他的公式比我簡單.... 表情

看到紅色的第三、四段....

不知道怎ㄇ去"套公式".....

雖然...大大有貼上現成的函式....(剛好我也是學C的....^^")

很想知道....那要怎ㄇ算才好....


獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2005-02-07 13:12 |
codeboy 手機
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x6 鮮花 x331
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

其實我也不是很懂說...不知道有沒有其他厲害的高手知道~
我去別的討論區問問看 表情



連結有問題請來信,我會盡快修正~^^
通報時請附上是"哪一篇失效"...這樣我才能去修正~麻煩各位好心人士了~

[連結失效通報][ 網頁.伺服.程式 討論區]
----------------------在世界中心呼喊愛情----------------------
深深思念一個人的時候,我們不知不覺的地活在世界的中心...
獻花 x0 回到頂端 [5 樓] From:局域網對方和您在同一內部網 | Posted:2005-02-14 14:26 |
pkpk0808 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我想了一下,應該是這樣
就舉今天好了 剛剛好可以解釋到

今天是2005 02 14 星期一
依照上面來說就是
D=14 (日期)
M=12 (2月=12)(可以對照上面的月號算法
C=20 (年份前兩位)
Y=4 (年份後兩位 但如果遇到二月或一月-1 所以是4)
帶入公式中
W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7
= (20/4–2*20 + 4+ 4/4 + [(13*12–1)/5]+14) % 7
= ( 5 - 40 + 4 + 1 + 31 ) %7
= 1 % 7 = 1 -> 星期一
再一例2005.10.18
D=18
M=8
C=20
Y=05

W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7
= ( 20/4 - 2*20 + 5 + 5/4 + [(13*8)-1]/5 + 18 ) %7
= ( 5 - 40 + 5 + 1 + 20 + 18 ) %7
= 9 % 7 =2 ->星期二


以上..應該是這樣沒有錯..
至於那個a的公式
他只是要讓你換算月份跟M還有Y之間關係的公式
因為程式要有一個公式出來比較方便不然其實也可以用
複製程式
Switch(month)
{
case 1:M=11;break;
case 2:M=12;break;
......待補完;
}
至於Y部分也可以用
Y=year%100去取year後面兩位 附加條件請看下面的code
C=year/100取year前面兩位
複製程式
if(M=11 || M=12)
Y = year % 100 -1;
else
Y = year % 100;
我的方法想法比較直截了當..也就是比較鳥啦..
至於D怎麼取應該沒問題吧..


試試看吧 應該沒有錯"吧"..嘿嘿表情

此文章被評分,最近評分記錄
財富:50 (by codeboy) | 理由: 詳細解說...鼓勵~


獻花 x0 回到頂端 [6 樓] From:台灣中華電信 | Posted:2005-02-14 15:44 |
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

ya!!....寫好摟....^^

有了樓上大大的解釋....

我就可以寫出來了...

下面是C++的源碼...

複製程式
int howtoday(int year,int month,int day)
{
       if(((year<1900) || (year>2100)) || ((month<=0) || (month>12)) || ((day<=0) || (day>31)))
              return -1;
       if((!(year%4 == 0) && (year%100 != 0) || (year%400 == 0)) && ((month==2) && (day>28)))
              return -1;

       ostringstream os;
       string howtodaytemp;
       int yeartemp1,yeartemp2;
       os<<year;
       temp=os.str();
       howtodaytemp.append(temp,0,2);
       yeartemp1=atoi(howtodaytemp.c_str());
       howtodaytemp.erase();
       howtodaytemp.append(temp,2,2);
       yeartemp2=atoi(howtodaytemp.c_str());
       if(month<=2)
       {
              yeartemp2=yeartemp2-1;
       }
       if(month<=2)
              month=month+10;
       else
              month=month-2;
       return ((yeartemp1/4)-(yeartemp1*2) + yeartemp2 + (yeartemp2/4)+((((month*13)-1)/5)+day))%7;
}

要含入iostream   string   sstream這三個喔!!

年份範圍1900~2100超出範圍會回傳-1...
如果遇到平年...輸入2月29號回傳-1

不知道有沒有bug...

至少...我輸入的日期都可以正確的回傳星期幾...

另外...還有二個問題

在以下版面
[求助]QQ....又看到一ㄍ看不懂的公式...救命阿!!
C or C++可以回傳1970年之前的日期嗎??


[ 此文章被0951020223在2005-02-15 00:03重新編輯 ]


獻花 x0 回到頂端 [7 樓] From:台灣中華電信 | Posted:2005-02-14 23:43 |
0951020223 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x64
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

抱歉喔....在上面的程式碼....我知道可以簡短....

我想留給以後看到的人去作....

感謝各位大大的指教!!...^^


[ 此文章被0951020223在2005-02-15 14:43重新編輯 ]


獻花 x0 回到頂端 [8 樓] From:台灣中華電信 | Posted:2005-02-15 14:17 |
j14387
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

謝謝大的無私了分享 表情


獻花 x0 回到頂端 [9 樓] From:未知地址 | Posted:2008-05-12 10:01 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.055366 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言