Package: lunar Version: 2.2-8 Severity: normal
Hi, The attachment is a substitute of 22_patch within lunar_2.2-8 for the following bugs: *** bugs_testing_scripts-with_results.txt Here is some simple bash-scripts for testing with results: 1. different datetime when query luan to/from solar: diff <(lunar=./usr/bin/lunar; y=1908; m=2; d=3; i=''; for h in `seq 0 72`; do let dd=$d+$[h/24]; h=$[h%24]; $lunar -u -s $i $y $m $dd $h | sed -n '3{N;s/\n/ \| /p}'; done) <(lunar=./usr/bin/lunar; y=1908; m=1; d=2; i='-i'; for h in `seq 0 72`; do let dd=$d+$[h/24]; h=$[h%24]; $lunar -u -s $i $y $m $dd $h | sed -n '3{N;s/\n/ \| /p}'; done) 1c1 < 阳历: 1908年 2月 3日 0时 星期一 | 阴历: 1908年 1月 2日子时 生肖属猴 --- > 阳历: 1908年 2月 2日 0时 星期日 | 阴历: 1908年 1月 2日子时 生肖属猴 24,25c24,25 < 阳历: 1908年 2月 3日23时 星期一 | 阴历: 1908年 1月 3日子时 生肖属猴 < 阳历: 1908年 2月 4日 0时 星期二 | 阴历: 1908年 1月 3日子时 生肖属猴 --- > 阳历: 1908年 2月 3日23时 星期一 | 阴历: 1908年 1月 2日子时 生肖属猴 > 阳历: 1908年 2月 3日 0时 星期一 | 阴历: 1908年 1月 3日子时 生肖属猴 48,49c48,49 < 阳历: 1908年 2月 4日23时 星期二 | 阴历: 1908年 1月 4日子时 生肖属猴 < 阳历: 1908年 2月 5日 0时 星期三 | 阴历: 1908年 1月 4日子时 生肖属猴 --- > 阳历: 1908年 2月 4日23时 星期二 | 阴历: 1908年 1月 3日子时 生肖属猴 > 阳历: 1908年 2月 4日 0时 星期二 | 阴历: 1908年 1月 4日子时 生肖属猴 72,73c72,73 < 阳历: 1908年 2月 5日23时 星期三 | 阴历: 1908年 1月 5日子时 生肖属猴 < 阳历: 1908年 2月 6日 0时 星期四 | 阴历: 1908年 1月 5日子时 生肖属猴 --- > 阳历: 1908年 2月 5日23时 星期三 | 阴历: 1908年 1月 4日子时 生肖属猴 > 阳历: 1908年 2月 5日 0时 星期三 | 阴历: 1908年 1月 5日子时 生肖属猴 2. "jie_alarm" at 0 - 23 o'clock, correct one is at 23 - 22: (lunar=./usr/bin/lunar; y=1908; m=2; d=4; i=''; for h in 22 23 24 47; do let dd=$d+$[h/24]; h=$[h%24]; $lunar -u -s $i $y $m $dd $h; done) Lunar Version 2.2-8 (Debian) (May 16, 2020) 阳历: 1908年 2月 4日22时 星期二 阴历: 1908年 1月 3日亥时 生肖属猴 干支: 戊申年 甲寅月 己丑日 乙亥时 用四柱神算推算之时辰八字: 丁未年 癸丑月 己丑日 乙亥时 Lunar Version 2.2-8 (Debian) (May 16, 2020) 阳历: 1908年 2月 4日23时 星期二 阴历: 1908年 1月 4日子时 生肖属猴 干支: 戊申年 甲寅月 庚寅日 丙子时 用四柱神算推算之时辰八字: 丁未年 癸丑月 庚寅日 丙子时 Lunar Version 2.2-8 (Debian) (May 16, 2020) 阳历: 1908年 2月 5日 0时 星期三 阴历: 1908年 1月 4日子时 生肖属猴 干支: 戊申年 甲寅月 庚寅日 丙子时 用四柱神算推算之时辰八字: 戊申年 甲寅月 庚寅日 丙子时 * 是日为节, 月柱可能要修改 * 年柱亦可能要修改 * 请查有节气时间之万年历 Lunar Version 2.2-8 (Debian) (May 16, 2020) 阳历: 1908年 2月 5日23时 星期三 阴历: 1908年 1月 5日子时 生肖属猴 干支: 戊申年 甲寅月 辛卯日 戊子时 用四柱神算推算之时辰八字: 戊申年 甲寅月 辛卯日 戊子时 * 是日为节, 月柱可能要修改 * 年柱亦可能要修改 * 请查有节气时间之万年历 3. for en, lunar using "big hour", e.g: zi3...etc. since "big hour" never bigger then 12: ./usr/bin/lunar Lunar Version 2.2-8 (Debian) (May 16, 2020) Solar : 2020.12.13.16 Sunday Lunar : 2020.10.29.16 ShengXiao: Mouse GanZhi: Geng1-Zi3.Ding1-Hai4.Geng1-Yin2.Jia3-Shen1 (GanZhi Order) 7-1.4-12.7-3.1-9 (JiaZi Cycle) 37.24.27.21 BaZi (8-characters) according to 'Four Column Calculation': Geng1-Zi3.Wu4-Zi3.Geng1-Yin2.Jia3-Shen1 (GanZhi Order) 7-1.5-1.7-3.1-9 (JiaZi Cycle) 37.25.27.21 4 datetime-go-back testing with results: 4.1 solar to lunar, correct: (lunar=./usr/bin/lunar; y=1908; m=2; d=3; i=''; for h in `seq 0 72`; do let dd=$d+$[h/24]; h=$[h%24]; $lunar -u -s $i $y $m $dd $h | sed -n '3{N;s/\n/ \| /p}'; done) 阳历: 1908年 2月 3日 0时 星期一 | 阴历: 1908年 1月 2日子时 生肖属猴 ........... 阳历: 1908年 2月 3日22时 星期一 | 阴历: 1908年 1月 2日亥时 生肖属猴 阳历: 1908年 2月 3日23时 星期一 | 阴历: 1908年 1月 3日子时 生肖属猴 阳历: 1908年 2月 4日 0时 星期二 | 阴历: 1908年 1月 3日子时 生肖属猴 阳历: 1908年 2月 4日 1时 星期二 | 阴历: 1908年 1月 3日丑时 生肖属猴 ........... 阳历: 1908年 2月 4日22时 星期二 | 阴历: 1908年 1月 3日亥时 生肖属猴 阳历: 1908年 2月 4日23时 星期二 | 阴历: 1908年 1月 4日子时 生肖属猴 阳历: 1908年 2月 5日 0时 星期三 | 阴历: 1908年 1月 4日子时 生肖属猴 阳历: 1908年 2月 5日 1时 星期三 | 阴历: 1908年 1月 4日丑时 生肖属猴 ............. 阳历: 1908年 2月 5日22时 星期三 | 阴历: 1908年 1月 4日亥时 生肖属猴 阳历: 1908年 2月 5日23时 星期三 | 阴历: 1908年 1月 5日子时 生肖属猴 阳历: 1908年 2月 6日 0时 星期四 | 阴历: 1908年 1月 5日子时 生肖属猴 4.2 lunar to solar, incorrect: (lunar=./usr/bin/lunar; y=1908; m=2; d=3; i='-i'; for h in `seq 0 72`; do let dd=$d+$[h/24]; h=$[h%24]; $lunar -u -s $i $y $m $dd $h | sed -n '3{N;s/\n/ \| /p}'; done) 阳历: 1908年 2月 2日 0时 星期日 | 阴历: 1908年 1月 2日子时 生肖属猴 ......... 阳历: 1908年 2月 3日22时 星期一 | 阴历: 1908年 1月 2日亥时 生肖属猴 阳历: 1908年 2月 3日23时 星期一 | 阴历: 1908年 1月 2日子时 生肖属猴 ^ the time | go back here V 阳历: 1908年 2月 3日 0时 星期一 | 阴历: 1908年 1月 3日子时 生肖属猴 ......... 阳历: 1908年 2月 4日23时 星期二 | 阴历: 1908年 1月 3日子时 生肖属猴 ^ the time | go back here V 阳历: 1908年 2月 4日 0时 星期二 | 阴历: 1908年 1月 4日子时 生肖属猴 ............. 阳历: 1908年 2月 5日23时 星期三 | 阴历: 1908年 1月 4日子时 生肖属猴 阳历: 1908年 2月 5日 0时 星期三 | 阴历: 1908年 1月 5日子时 生肖属猴 -- System Information: Debian Release: 6.0.10 APT prefers squeeze-lts APT policy: (500, 'squeeze-lts'), (500, 'oldoldstable-updates'), (500, 'oldoldstable-proposed-updates'), (500, 'oldoldstable') Architecture: i386 (i686) Kernel: Linux 2.6.32-5-486 Locale: LANG=zh_CN.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
--- old/lunar.c 2020-12-05 11:13:54.901959460 +0800 +++ new/lunar.c 2020-12-05 11:29:05.194918875 +0800 @@ -410,15 +410,23 @@ offset = Solar2Day(&solar); solar.weekday = (offset + SolarFirstDate.weekday) % 7; - /* A lunar day begins at 11 p.m. */ + /* A lunar day begins at 11 p.m. of last day */ if (solar.hour == 23) + { offset++; + Day2Solar(offset, &solar); + jieAlert = JieDate(&solar, &lunar2); + Day2Solar(offset - 1, &solar); + } + else + { + jieAlert = JieDate(&solar, &lunar2); + } Day2Lunar(offset, &lunar); lunar.hour = solar.hour; CalGZ(offset, &lunar, &gan, &zhi); - jieAlert = JieDate(&solar, &lunar2); lunar2.day = lunar.day; lunar2.hour = lunar.hour; CalGZ(offset, &lunar2, &gan2, &zhi2); @@ -430,15 +438,28 @@ long offset; int adj; - /* A solar day begins at 12 a.m. */ - adj = (lunar.hour == 23)? -1 : 0; offset = Lunar2Day(&lunar); - solar.weekday = (offset+ adj + SolarFirstDate.weekday) % 7; - Day2Solar(offset + adj, &solar); + solar.weekday = (offset + SolarFirstDate.weekday) % 7; + Day2Solar(offset, &solar); solar.hour = lunar.hour; + + /* A lunar day begins at 11 p.m. of last day */ + if (lunar.hour == 23) + { + Day2Lunar(offset + 1, &lunar); + offset = Lunar2Day(&lunar); + Day2Solar(offset, &solar); + jieAlert = JieDate(&solar, &lunar2); + Day2Solar(offset - 1, &solar); + } + else + { + jieAlert = JieDate(&solar, &lunar2); + } + CalGZ(offset, &lunar, &gan, &zhi); - jieAlert = JieDate(&solar, &lunar2); + lunar2.day = lunar.day; lunar2.hour = lunar.hour; CalGZ(offset, &lunar2, &gan2, &zhi2); @@ -902,9 +923,9 @@ { printf("Solar : %d.%d.%d.%d\t%s\n", solar.year, solar.month, solar.day, solar.hour, weekday[solar.weekday]); - printf("Lunar : %d.%d%s.%d.%d\tShengXiao: %s\n", + printf("Lunar : %d.%d%s.%d.%s\tShengXiao: %s\n", lunar.year, lunar.month, (lunar.leap?"Leap":""), lunar.day, - lunar.hour, ShengXiao[zhi.year] ); + Zhi[zhi.hour], ShengXiao[zhi.year] ); printf("GanZhi: %s-%s.%s-%s.%s-%s.%s-%s\n", Gan[gan.year], Zhi[zhi.year], Gan[gan.month], Zhi[zhi.month], Gan[gan.day], Zhi[zhi.day], Gan[gan.hour], Zhi[zhi.hour]); @@ -938,9 +959,9 @@ { printf("Solar : %d.%d.%d.%d\t%s\n", solar.year, solar.month, solar.day, solar.hour, weekday[solar.weekday]); - printf("Lunar : %d.%d%s.%d.%d\tShengXiao: %s\n", + printf("Lunar : %d.%d%s.%d.%s\tShengXiao: %s\n", lunar.year, lunar.month, (lunar.leap?"Leap":""), lunar.day, - lunar.hour, ShengXiao[zhi.year] ); + Zhi[zhi.hour], ShengXiao[zhi.year] ); printf("GanZhi: \n\n"); display3(gan.year+GanBM, zhi.year+ZhiBM, NianBM); display3(gan.month+GanBM, zhi.month+ZhiBM, YueBM);