31.08.2026 07:41:10

КАК быстро и точно посчитать ЛЮБУЮ дату в Ба цзы от - 2697 г. до н.э до 9999 н.э.


Готовый код. Копируете, запускаете, вводите дату.

Python

************************************************************************

STEMS = "甲乙丙丁戊己庚辛壬癸"

BRANCHES = "子丑寅卯辰巳午未申酉戌亥"

Согревание Денежной Звезды в месяце Петуха 07.09-08.10.2026
1270* 546.00 Р
Спецпредложение до: 02.09.2026
Календарь сильных дат для продаж и продвижения на август
2400* 1 200.00 Р
Спецпредложение до: 31.08.2026


def jdn(y, m, d):

a = (14 - m) // 12

yy = y + 4800 - a

mm = m + 12 * a - 3

return d + (153*mm+2)//5 + 365*yy + yy//4 - yy//100 + yy//400 - 32045


def gz(s, b):

return STEMS[s % 10] + BRANCHES[b % 12]


def day(y, m, d):

i = (jdn(y, m, d) + 49) % 60

return gz(i, i)


def year(y, m, d):

ys = y if (m > 2 or (m == 2 and d >= 4)) else y - 1

i = (ys - 1984) % 60

return gz(i, i), i % 10


def month(ys, m, d):

t = (m, d)

if t < (1, 6): o = 10

elif t < (2, 4): o = 11

else:

for o in range(10, -1, -1):

if t >= [(2,4),(3,6),(4,5),(5,6),(6,6),(7,7),

(8,8),(9,8),(10,8),(11,7),(12,7)][o]:

break

br = [2,3,4,5,6,7,8,9,10,11,0,1][o]

st = ([2,4,6,8,0][ys % 5] + o) % 10

return gz(st, br)


def hour(ds, h):

br = (h + 1) // 2 % 12

st = ([0,2,4,6,8][STEMS.index(ds) % 5] + br) % 10

return gz(st, br)


# ══════════════════════════════════════

print("БАЦЗЫ | 2697 до н.э. — 9999 н.э.")

print("Ввод: год месяц день [час]")

print("До н.э. = минус: -200 6 5 → 5 июня 200 до н.э.")

print("Enter = выход\n")


while True:

s = input("Дата: ").strip()

if not s: break

p = s.split()

if len(p) < 3:

print(" Нужно: год месяц день\n"); continue

y, m, d = int(p[0]), int(p[1]), int(p[2])

h = int(p[3]) if len(p) > 3 else 12


# для JDN: исторический год → астрономический

ay = y + 1 if y < 0 else y


yp, ys = year(ay, m, d)

mp = month(ys, m, d)

dp = day(ay, m, d)

hp = hour(dp[0], h)


label = f"{abs(y)} до н.э." if y < 0 else f"{y}"

print(f"\n {d}.{m}.{label} {h}:00\n")

print(f" 年 月 日 時")

print(f" {yp} {mp} {dp} {hp}\n")


*************************************************************************

Все что между звездочками выше копировать!

***

Как запустить за 30 секунд

Откройте www.programiz.com

Удалите всё, что там есть

Вставьте код выше

Нажмите Run ▶

Внизу в поле ввода вбейте дату:

-200 6 5 8

Это = 5 июня 200 до н.э., 8 утра


***

Формат ввода

Что вводите Что это значит

2000 1 1 12 1 января 2000, полдень

-200 6 5 8 5 июня 200 до н.э., 8 утра

-2697 2 4 0 4 февраля 2697 до н.э., полночь

1984 1 31 31 января 1984, полдень (по умолчанию)

9999 12 31 23 31 декабря 9999, 23:00

***

Честное предупреждение

Границы месяцев (Цзе) в коде приближённые (±1–2 дня). Если дата рождения попадает на 3–6 февраля или 5–8 число любого месяца — столп месяца может сбиться на один. Для таких пограничных дат нужна сверка с 萬年曆 (wan nian li). Для всех остальных дат (95% случаев) — точно.


Можно сделать в любом блокноте Питона, но этот не требует аккаунта.

Берегите себя.

    Было ли Вам это интересно?

Комментарии (0)

Популярные товары
Популярные публикации

7 сентября 2026 года наступает месяц

В сентябре приходит грабитель для людей с элементом личности огонь ян и металл ян. Вы можете тратить деньги в любой день, но лучше это сделать в начале месяца.Кто такой грабитель и почему его нужно кормить?Бывают такие дни, когда всё к одному. Ломается транспорт, тут же теряются ключи, кошелек. Троюродному...


Искать в публикациях

 

Форумы

Случайные посты форума









Топик: Работа Сообщение: Спасибо вам











Cвежие посты форума









Топик: Работа Сообщение: Спасибо вам

Популярные темы форума

Топик: Вопрос Fazilovoi Olge Сообщение:   Интервью с

ПОДПИШИСЬ

НА РАССЫЛКУ

И ПОЛУЧИ

БЕСПЛАТНО

КНИГУ

И УЗНАВАЙ ПЕРВЫМ ОБО ВСЕХ САМЫХ

ИНТЕРЕСНЫХ СОБЫТИЯХ ФЕН-ШУЙ