File: 22_datetime-go-back_Zhi.hour_jiealert.patch

package info (click to toggle)
lunar 2.2-10
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 364 kB
  • sloc: ansic: 5,715; makefile: 27
file content (99 lines) | stat: -rw-r--r-- 3,224 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Description: fix some error on 23o'clock and show "big hour" in lunar

1. incorrect Jie-alert at 23o'clock
2. need "big hour" for lunar
3. lunar to/from solar is diff

---

Origin: luckystar <hymanchou@189.cn>
Bug-Debian: https://bugs.debian.org/977439
Reviewed-By: xiao sheng wen <atzlinux@sina.com>
Last-Update: 2020-12-16

--- 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);