Javascript 一句话获得农历
今天看到有人说 Intl 这个 ECMAscript 内置对象,就翻了一下,发现可以一句话算农历。
new Date().toLocaleString('zh-CN-u-ca-chinese').replace(/(d+)年 /, (_,y)=>"甲乙丙丁戊己庚辛壬癸".charAt((y-4)%10) + "子丑寅卯辰巳午未申酉戌亥".charAt((y-4)%12))
大家还有更简单或者更短的办法么。交流一下。
今天看到有人说 Intl 这个 ECMAscript 内置对象,就翻了一下,发现可以一句话算农历。
new Date().toLocaleString('zh-CN-u-ca-chinese').replace(/(d+)年 /, (_,y)=>"甲乙丙丁戊己庚辛壬癸".charAt((y-4)%10) + "子丑寅卯辰巳午未申酉戌亥".charAt((y-4)%12))
大家还有更简单或者更短的办法么。交流一下。
new Date().toLocaleString(‘zh-CN-u-ca-chinese’).replace(/(d+)年 /, (_,y)=>”甲乙丙丁戊己庚辛壬癸”.charAt((y-4)%10) + “子丑寅卯辰巳午未申酉戌亥”.charAt((y-4)%12))
“2020 年七月 23 下午 8:34:56”
new Date().toLocaleString(‘zh-CN-u-ca-chinese’)
“2020 年七月 23 下午 8:35:21”
new Date().toLocaleString(‘zh-CN-u-ca-chinese’).replace(/(d+)s*?年 /, (_,y)=>”甲乙丙丁戊己庚辛壬癸”.charAt((y-4)%10) + “子丑寅卯辰巳午未申酉戌亥”.charAt((y-4)%12))
IE 11 是这样表现的:
new Date().toLocaleString(‘zh-CN-u-ca-chinese’)
“2020年9月11日 0:23:19”
感觉农历很麻烦的一点在于,它是需要结合天文观测测算的。而 ICU 的推算注定是不准的,因为其基准的时间戳是无法与农历用公式对应的。
相应地,如果是 ja-JP-u-ca-japanese 则采用令和。不过默认的 era 属性为 narrow,导致令和显示为 `R`,需要手动指定 options 里的 {era: ‘long’} 或者 {era: ‘short’}