从做了个倒数日小助手,到了解农历(农历≠阴历) | 附永久码

2022-08-15 16:54:45 +08:00
 jackyin

之前,一直以为农历和阴历是一回事。

在做这个倒数日小助手的时候,为了支持农历,查了一些农历的知识,发现它俩原来不是一回事儿.

趁此机会,简单写一下,加深下自己的理解,知识这种东西,写一遍就会加深自己的学习效果,写的过程,自己就得努力把知识捋一下。所以这段时间在学习 SwiftUI 的过程中,就是多写 App 。

开发时,在寻找支持农历途径的过程中,发现 SwiftUI 里 DatePicker 是可以指定不同的历法的,而且还不少,标准的 iso8601 ,中国的 chinese ,甚至还是民国的 republicOfChina ,还有印度的 indian ,还有很多,原来这世界上有这么多历法,也就是说,如果要做一个全球通用的小日历,很不简单。

历法很多,但计算的过程大多离不开日月转动规律(在那个年代,日月都是围绕地球转的)。以太阳转动为基础的历法叫阳历,以月亮转动为基础的历法的叫阴历。

首先来讲讲阳历,阳历中的 1 年就是地球绕太阳一圈,使用阳历可区分一年四季,阳历可指导农业生产。由于计算阳历跟月亮无关,所以看阳历时间是知不道月圆的。

再说阴历,阴历就是根据月亮的圆缺来计算的。由于计算阴历跟太阳无关,所以只看阴历是无法区分一年四季的,也无法指导农业生产。

最后说说农历,农历不仅可以区分一年四季,还可知晓月圆,很强大,同时也很复杂,我在查资料的过程中发现,微软、苹果都有过将农历算错的 Bug 。

既然农历,又知四季,又晓月圆,如此农历又可被称作阴阳历。那么农历又是如何将阳历与阴历结合的呢?

首先,我们在阳历上使用了节气,用立春、立夏、立秋、立冬来区分四季,然后再进行均分,得出二十四节气,以此作为农业生产依据。

然后,我们又在阴历上使用月亮圆缺来记日子。

不知道大家有没有发现,中国的好多节日用的是阴历,比如春节正月初一、端午五月初五、七夕七月初七,但有个节日比较特殊,就是清明节,它其实是一个节气,节气是用的阳历,所以清明节对应的公历时间在 4 月 5 号左右。

二十四节气中有个比较特殊的节气,就是小满,因为小暑、小雪、小寒都有对应的大暑、大雪、大寒,只有小满,没有大满,大满则溢,所有小满即可。中国人在表达幸福的时候喜欢加个“小”字,比如小幸福、小确幸、小甜蜜、小美好,这不仅是人们对当下幸福的满足,也许也带有害怕失去幸福的忧心在里面吧。

在使用 SwiftUI 的 DatePicker 时,还遇到了另一个奇怪的问题,就是农历的年份永远是 1 到 60 ,经查资料,农历的年份的确只有 1 到 60 ,60 年为一甲子,由十天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸)与十二地支(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)按顺序两两相配得到,今年( 2022 年)为壬寅年。

组合一下,第一个就是甲子年,最出名的一个甲子年(公元 184 年)大家应该都听过:“苍天已死,黄天当立,岁在甲子,天下大吉”。

下一个甲子年是公元 2044 年。

最后介绍下我做的倒数日小助手吧,比较简单,没什么独特,就是记记重要日子,使用了 iCloud 自动云同步数据,花了几天做的,学习了下 App Groups 和 Widget 的一些知识,App 与小组件间共享数据需要用到 App Groups 。

接下来,可能会做一个记账 App ,因为要学习下 CloudKit 多人实时共享私有数据,用家庭共同记账的使用场景来练习,理论上路线应该是对的,不知道效果如何,大概查了下资料,貌似 CloudKit 多人实时共享私有数据貌似比较麻烦,有熟悉的大佬帮忙指点一下吗?非常感谢。

倒数日小助手

https://apps.apple.com/cn/app/countdown-helper/id1637793913?platform=iphone

使用促销码的方式

打开 App Store -> 点击右上角头像 -> 点击兑换礼品卡或代码 -> 输入代码即可。

进入 app ,点下恢复购买就可以生效啦。

促销码

使用后请留言附上已使用的码,不然会导致很多人在不停的尝试无效码。

3AYJ467YFP3X

J79A7TNK966T

TF3JHM6ALHA6

H3RX9F3HFMP7

YKAMH7M6NAKH

X476HT743M6E

3KJ99LNFYKN4

9LNAA93JLMK3

T6E94MTJ94L3

XKA9PREX3WNY

T7NFW36J47W7

AJLELEXFNE4E

3L7EAHKMANX3

KMJAF7RWKL6E

6RXW6WKKERWF

9JWP99TFLPRK

HN3P3P374XJP

TW3P6HMT73YK

WN7LH4XJFYFP

7XYAJPF9PHYH

RNPFNE9R3HLT

7EXHMMX794JJ

KXFY9L9Y4WK3

MXMANHH4NLLP

6ETFEJJNL6AL

YKE9TWTK9P76

J74KPEWYFAWP

WR6YTEMWK4LT

PRP3N7APEMXF

EL3EMMFKRPMM

J69LWN347NYJ

HAF6JR6MR37A

FTKX7WJHTA3L

RPFL9L3PT4AH

X9JKNH67MHW9

9WXTRE76FNLK

R7HPP4TRFF6T

HYT4FM7TJWK4

WXYTY9L473XE

MP4PXF97TK7A

T6FLMLPL6PLA

F9WALPRYRY6E

6YW9NHREWXRW

4PWYAJHF7FEM

4JNTYTY4NP7Y

94RTHR3KY96K

T34MLJHJFKYK

FK3PKFMN9EEX

KAM79XFEYL4Y

MMNNRFT933LX

RMM766WK4F7W

363T4JAJRKNH

LN63YX3A7EPL

EJLX76NHFMEY

64M7LFLETWTE

9Y3M6K9MHMKA

WF4XJ3TTE67M

376H6MPE7ER4

R3FA7LFXWEH6

6A36RRJTRE7N

MHY9LJFPTJLA

7JHYF4HLKYYK

PEYW3RWXKJRX

4KM3MRR6F6WH

XPYLEEPRXRK3

TX3M77KP39YE

T4AEXHT6PJHF

JAN7AT3AY699

EWEEX9JFX3LP

JL3M4976ELLM

KJT3EFAMAPAX

MR9K49H6RAA3

HYJP7K3P99RX

XHL3KYPLY4W6

4KE64W6WN3XW

EYJW7PKKRF7Y

H6TTXXXME36J

RWAYX7YAFYXY

J7E3XJNMTKWW

H6XFTYHLHJ7A

9L4AW44AX6X3

FF33NMTW7JYT

MTJFJ9AH33Y9

Y3H3JM6FWTXW

XN3T3K7J4NNJ

WHEKFF6EXJW6

JKJNPKK6RP7A

9HPW93TK4M7E

L96YY3X3F6LJ

RER679FRMK9F

开发者们的小世界

创建一个独立开发者的 QQ 交流群(群号:1169775881 ),微信群 200 人就要手动添加,很是麻烦,趁此机会重新创建一个 QQ 群吧,大家可以交流交流吐槽吐槽,互相看的上的也可以一起搞搞。

诸事顺遂,贵体康泰。

5002 次点击
所在节点    分享创造
72 条回复
Dealtz
2022-08-15 21:47:53 +08:00
TW3P6HMT73YK 已用。
我对这个也有了解,农历是阴阳历,每 19 年是一个轮回。你的十九岁农历生日就是你公历出生日期哦~
cheese
2022-08-15 21:54:00 +08:00
懒得试了,没想到 v 站也有这么多拿了码一句话不说的。祝楼主 app 大卖
jackyin
2022-08-15 22:56:55 +08:00
@jonathanchoo 感谢反馈,我再找找问题哈~
jackyin
2022-08-15 22:58:42 +08:00
@FEDT 二十四节气是根据阳历计算的,但仍属于农历范围(阴阳历),只是不属于阴历。
jackyin
2022-08-15 23:00:23 +08:00
@cheese 非常感谢~ 偷偷留一个 64NWW3AYH7LH
cheese
2022-08-15 23:50:53 +08:00
@jackyin #45 好耶,已下载!
Suigintou
2022-08-16 02:13:15 +08:00
前阵子我正在寻求倒数日 APP ,可惜擦肩而过~
jackyin
2022-08-16 02:28:47 +08:00
@Suigintou 可否回眸 N7PNF9K3769A
duangaduang
2022-08-16 05:39:30 +08:00
试了好多都用了
lovelylain
2022-08-16 08:29:43 +08:00
@FEDT 二十四节气是农历的一部分,农历≠阴历,农历是阴阳合历,阴历部分就是每个月多少天,严格按朔望月,朔日在初一;阳历部分就是 2411 天,所以节气,严格按阳历,冬至就是太阳直射在南回归线的时候;因为公历也是按阳历,所以 24 节气每年都落在公历差不多的日期,但是公历置润是按固定算法,4 年润 1 天 400 年不润,所以它跟严格按阳历的二十四节气会有偏差,清明节有时候在 4 月 5 日,有时候在 4 月 3 日或 4 月 6 日。另外一个朔望月天数是 29.53 天,12 个月才 354.36 天,和地球公转周期差了接近 11 天,所以农历会有闰月来修正,在哪个
lovelylain
2022-08-16 08:35:07 +08:00
月份置润是跟二十四节气相关的。两个冬至之间,如仅有 12 个月则不置闰,若有 13 个月即置闰。置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在这个月之前月份的名称前加一个“闰”字。所以农历≠阴历,二十节气也不是公历。
xz410236056
2022-08-16 09:21:02 +08:00
农历确实是阴阳历,准倒是准,就是各种润的情况比较麻烦不好记。
shiguiyou
2022-08-16 09:31:07 +08:00
收藏一下,有空试试搞个 android compose 版本的
tuwulin365
2022-08-16 09:33:09 +08:00
为什么弄个软件都要鸡和马?
iluolSNS
2022-08-16 09:34:59 +08:00
好多用了也不回
kidtest
2022-08-16 10:07:35 +08:00
@Dealtz 哈哈哈我还去查了一下,果然是这样,有意思!
fengtalk
2022-08-16 10:35:40 +08:00
9L4AW44AX6X3
Y3H3JM6FWTXW
JKJNPKK6RP7A
KJT3EFAMAPAX
7JHYF4HLKYYK

以上全用,有些也没回复。没兴致了。
blank0ken
2022-08-16 10:44:20 +08:00
感谢 up 科普,之前没有特意查过区别。
兑换码都试了一遍,都用掉了,后面的人不用试了
Guesser
2022-08-16 11:03:29 +08:00
建议把二十四节气、中国重要节日支持默认导入
Suigintou
2022-08-16 11:09:08 +08:00
@jackyin 当时睡了,不知道谁用了也不吭一声,说来才发现你也是“今日背单词“的开发者😂,背单词还不错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873011

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX