瀏覽單個文章
anomaly
Advance Member
 

加入日期: Feb 2003
文章: 406
重點是萬年曆的運算, 英文版Wiki有說如何運算

http://en.wikipedia.org/wiki/Julian_day#Calculation

以下C99 code是小弟網路上找的, 利用以上演算, 不仰賴外部library. code只有3行, 若要壓到1行也是可以的, 但compiler會抱怨, 且最後轉出的assembler不會比較優.

代碼:
#include <stdio.h>

const char *wd(int year, int month, int day) {
  static const char *weekdayname[] = {"Monday", "Tuesday",
        "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
  size_t JND =                                                     \
          day                                                      \
        + ((153 * (month + 12 * ((14 - month) / 12) - 3) + 2) / 5) \
        + (365 * (year + 4800 - ((14 - month) / 12)))              \
        + ((year + 4800 - ((14 - month) / 12)) / 4)                \
        - ((year + 4800 - ((14 - month) / 12)) / 100)              \
        + ((year + 4800 - ((14 - month) / 12)) / 400)              \
        - 32045;
  return weekdayname[JND % 7];
}


找出第一個週二再稍微寫一些code即可
舊 2015-05-24, 01:34 PM #39
回應時引用此文章
anomaly離線中