為什麼現在的操作系統都沒有提供對農曆的原生支持?


言簡意賅:
農曆是天文歷;
格里曆(公曆)是計算曆。

天文歷需要實測,公曆可以計算。

可計算和不可計算,才是計算機的難點。

農曆根據精確的實測的此刻,能精確估算以後一少部分,優點是幾乎無誤差,缺點是無固定規律,不能推算很遠,需要經常地測量天文。

公曆算出了幾百年的平均值,估算以後很遠的平均值,優點有規律可循便於計算,缺點是存在少許誤差需要適當的人為調整。

其實我也一知半解。


農曆未被操作系統原生支持並不是因為不重要或者使用頻率低,也不是計算過於複雜。
以OSX為例,語言和地區中的日曆中支持的衣索比亞的日曆都有兩種,而農曆在中國城鎮農村中的使用度其實非常高,如許多人的生日都是以農曆為準,許多傳統節日如元宵節、中元節、中秋節也以農曆為基準。至於計算,ccal之類的方法配合在線校正,總是有辦法做到的。

真正的難題在於:農曆的紀年法沒有標準,所以農曆實際上無法與公曆日期對應。傳統的年號紀年已經廢止,沒有與日本日曆中的「平成25年」相應的記法了。傳統的干支紀年是循環的,也無法與線性的公曆對應。公元2005年正月初三,甲午年正月初五,都會造成一些困惑。標準委員會推行「黃帝紀元」或者類似的標準紀年法,大概是一個辦法。


農曆是每年通過天文觀測得來的,沒有具體演算法,原因見下方的知識普及或者自己去看wiki。技術實現上可以每隔一段時間錄入到伺服器上進行推送,雖然技術不難實現,但的確是比較繁瑣。

在「日常生活」中,農曆實在是用得太少。除了春節期間外,將農曆加到日曆中反而會帶來干擾。

另外,節氣是能對應上公曆的日期的,用不著查農曆。

————————————
下面是知識普及。。。
曆法主要分為陽曆、陰曆和陰陽曆三種。

  • 陽曆即以太陽為基準,根據地球上所呈現出太陽直射點的周期性變化(地球繞太陽的公轉),所制定的曆法。我們現在日常所用的公曆,即為陽曆的一種。陽曆無法反應月相。
  • 陰曆即以月亮為基準,按月亮的月相周期(月球圍繞地球的公轉)來安排的曆法。現在很少有人使用。伊斯蘭曆就屬於陰曆的一種。純粹的陰曆只以月相為準,與太陽周期無關,所以不能反應季節節氣。
  • 陰陽曆在天文學中是指兼顧月相周期和太陽周年運動所安排的曆法。中國的農曆(夏曆/黃曆/舊曆)就屬於陰陽曆的一種。

在農曆中,月份反映了月相變化。定朔日是根據天文台觀測數據來確定的,太陽的黃經和月的黃經一致的當天作為每月的初一。這一部分結合了陽曆和陰曆的特點,並無具體演算法,只能由每年天文觀測來確立。具體數據可以查看 香港天文台公曆與農曆日期對照表。

農曆中的節氣是根據太陽直射點變化來確立的。二十四節氣分別相應於太陽在黃道上每運動15°所到達的位置。這一點是根陽曆保持了一致,所以說每年農曆的24節氣是能對應上公曆的日期的。

參考維基百科: 曆法 、農曆


農曆是一種陰陽曆,就是太陽曆和月亮歷的綜合。每個月是月亮歷,但會根據太陽曆調整閏月。農曆是可以計算的,這裡大致列舉一下如何計算:(資料來源:陰曆規則 )

-----

中國陰曆的計算有下列幾條規則:

  1. 所有新月和節氣出現時刻的計算以北京時間為準。現北京時間為東經120度即東八區標準時。但計算1929年以前的陰曆時應以北京即東經116度25分的當地時為準。此條規則用以區分中國陰曆和其他類似陰曆如日本陰曆。
  2. 一天始自夜裡零時。儘管舊時的子時相當於現今的23時至1時,但是子時的上四刻屬於前一天,下四刻才屬於新的一天,所以和現今一天始自零時的定義是一致的。
  3. 新月出現的一天為一個月的第一天。如某個節氣的出現時刻也在這一天,則不論該節氣的出現時刻是否比新月晚,一律算落入新的一個月中。
  4. 每年的冬至總是出現在這年的陰曆十一月中。
  5. 從一年的冬至後一天起到下一年冬至這一天止的這段時間中,下稱其間,如有十三個新月出現,則其間要加入一個閏月。需要加入閏月時,其間第一個沒有中氣的月為閏月。因為其間只有十二個中氣,所以其間至少有一個月沒有中氣,也存在有兩個月沒有中氣的可能性。但這種情況下只有第一個沒有中氣的月為閏月。閏月的前一個月為幾月則該閏月稱為閏幾月。

-----

節氣和農曆沒有關係,是通過太陽曆計算出來的。

詳細的計算方法可以參考ccal代碼(http://ccal.chinesebay.com/ccal/ccal.htm),或者也可以在線查看kcanlendar(liangqi/kcalendar · GitHub)中的ccal代碼。

為什麼現代的操作系統都默認不提供農曆的支持?我們自己(中國人)使用農曆的情況又如何呢?個人覺得越來越少,我本人是七十年代末生人,還用農曆過生日,到八十年代後期出生的朋友,還有多少用農曆過生日呢?感覺上現在對於農曆的使用也就是知道春節、端午、中秋,基本就夠了。我們日常有幾人會只使用農曆?個人覺得農曆只是一個輔助工具,並不能算是必需的。

還請參考 @郭曜源 朋友在評論中的討論,以後整理好,再更新進正文。


原因:肯定不是技術難度問題了。

估計需求並不強烈,我覺得再強強不過五筆……

解決方案:我在OSX 10.9的日曆上看到了兩個農曆,應該分別是google和apple的農曆事件(從伺服器同步下來的)。你如果是別的版本的系統,估計也可以找一些公共日曆來訂閱一下。

============ 補充 ==========
看到 @范華燈 的回答,補充一下:

沒有胎神吉星,吉凶時辰,婚喪嫁娶,方位利弊的農曆不是好農曆。

我認為還是需求的原因。如果這個是強需求的話,必然很多天氣軟體會加進來。或者做個類似天氣軟體的展現。OS X的 dashboard 就很適合放一個這樣的農曆插件。從用戶群體來看,老人機、一人一本應該更加適合做個這樣的應用。

農曆日曆和胎神吉星不是同一個級別的需求,日曆的需求從強到弱排列我認為是:查看日期時間 &> 日程管理 &> 星座、占卜、吉日查詢等。


另外,傳統操作系統的思維是只做基本的功能,雖然現在因為用戶體驗等原因,操作系統逐漸介入更多的應用開發,但複雜或者小眾的業務還是留給應用開發商。


因為農曆實際上沒有任何意義了。

有一個非常嚴重的誤解,就是節氣和農曆的關係。其實節氣在公曆上是well-define的,而在農曆上反而是ill-define的,充滿exception,需要至少兩重跳轉表才能得出。

假期?假日辦說哪天就是哪天了,你就算知道農曆又有什麼用。


OS X 已經在 10.10 Yosemite 里正式加入了原生支持中國農曆。
Apple - OS X Yosemite


從技術上講編排農曆其實很難。本以為農曆很簡單,但2013年冬至是我改變了看法。2013年網上的在線萬年曆,買來的掛曆和報上登載的冬至日期竟然不一樣,可見確定農曆並不容易。據說農曆不是算出來的,是要靠觀測。月份是根據月亮的周期然後取整,這就導致有的月30天,有的月29天。是否是閏月則要根據這個月出現的中氣(偶數的節氣)而定,而節氣是要根據地球的公轉來確定。如秋分是指太陽正射赤道的那一天,有秋分的那個月既是八月,如七月過後的那個月不包括秋分日,那麼這個月就稱之為閏七月。地球圍繞太陽旋轉和月亮圍繞地球旋轉就像兩個旋轉的陀螺,陀螺自轉軸與公轉軸不平行時會出現進動和攝動,致使公轉周期並非勻速。如要推算每月的天數和24個節氣的具體日期並不容易,要考慮地球和月亮的公轉、自轉、進動和攝動等,據說還要計算天體的潮汐變形。每年的農曆要根據上一年紫金山天文台發布天文年曆編製,相當複雜。據說也有天文機構推算出了較長時間的高精度的天文年曆。但是萬年曆就不靠譜了,未來的還好說,推算複雜但還是可算的,過去的就要根據當年的權威發布來定,因為即使你推算的正確,不保證古人也推算的正確,但不管誰對誰錯總要以當年的權威發布為準,當年老百姓的日子是那麼過的,記錄的歷史文獻也都是按那個日期。想想看如果節氣計算誤差導致相差了一天會出現什麼狀況?碰巧的話有可能會產生一個閏月。


感覺還是中國文化的傳播力不夠。而且隨著微軟,蘋果等對中國市場的逐漸重視,不多久主流操作系統里也會原生支持農曆的


微軟shability!這種shability事還會繼續做下去!

Ps0.

shability行為舉例: windows phone 7.8, windows 10 mobile, windows 8, windows 10, 開始菜單, zune software, music, video (for windows 10, windows phone 8.1)

ps1. shability 作死用戶買單這種事微軟這種大公司做的最多!

ps2. 微軟shability!


這個就是重視不重視的問題。


沒有胎神吉星,吉凶時辰,婚喪嫁娶,方位利弊的農曆不是好農曆。


不管怎麼樣,顯示一個正月初五,還是很有必要的!特別是春節中秋端午!!!


簡而言之 1 無需求 2 現在的操作系統既沒有專門針對中國開發的 也沒有中國自己開發的 世界上除農曆以外還有好多歷 也不可能每個都做

不過 咱以後可以自己開發一個操作系統 裡面就會有農曆了……


OS X 10.10和iOS 8都原生支持了農曆,但我都是在第一時間把它關掉……


誰說不支持的?最新版本的ubuntu麒麟不就支持么?


您看看蘋果那個帶農曆的日曆,上面字兒多的找什麼都找不著,還沒法弄掉那些個字兒,簡直是坑爹啊。
言下之意就是如果要用中文操作系統就得忍受這個滿面是字兒的日曆
這簡直是霸王條款啊霸王條款


我覺得並不需要對農曆提供原生支持,個體用戶需要,自己裝個第三方的什麼軟體插件就好了!
而且農曆是否有用?是的,有用。
但是否常用?(頻率有多高?)對於很多人來說就意義不大了。
至於春節節假日之類的,在陽曆在也會有體現的。

以及什麼都要求操作系統原生支持無疑使一個操作系統變得累贅,滿足了小部分用戶的需求而給另外大部分的人造成負擔也不合適。操作系統並不是面面俱到才是好的...


感覺只是市場問題。

農曆作為太陽曆與太陰曆合併計算的成熟曆法,與觀象授時的太陰曆相比,可預測性很強,計算機沒什麼算不清的。如果真的只是計算機問題,那就都可以搞了,而不是有的系統不搞。

市場問題則源於人的問題。你計算機可以搞出來,但人仍然不愛用,因為自己沒法算。你看格里曆,雖然也很拙劣,所謂一個月,大多要比朔望月長出很多時間來,還好意思叫什麼月!但人家就是方便,記住每月多少天,就全齊了。格里曆閏年的演算法也很簡單,並且只是閏出一天,不是閏出一個月來,大部分人都無需太在意(好吧 2.29 過生日的人會很在意)。根據格里曆推算節氣也很方便,甚至已經讓節氣變成了多餘的東西,徒有其名而已。農曆么,來一個什麼十九閏七,計算機倒是分分鐘搞定,人呢?

中國重視農曆,也僅僅是中國市場而已。我承認應該都搞起來,畢竟中國人需要,中國市場影響也在增強,但畢竟還只是中國,別的國家真沒那麼大需要,甚至要求操作系統這個級別都來重視了。


農曆是中國農業社會的產物,現實生活中基本就是關注一下節假日時會使用,平時誰知道今昔適合年何月何日?


推薦閱讀:

好奇號的固件刷新是一個怎樣的過程?為什麼需要在著陸之後幾天給它刷新系統?
請問,多個線程可以讀一個變數,只有一個線程可以對這個變數進行寫,到底要不要加鎖?
動不動就 32GB 以上內存的伺服器真需要關心內存碎片問題嗎?
程序員的鄙視鏈是什麼?
使用 Linux 的人一般是出於什麼原因選擇這個系統?

TAG:操作系統 | 計算機 | 農曆 | 日曆 |