Conversión de fecha lunisolar de Python

    Convierta el calendario solar al calendario lunar (Yin) y convierta el calendario lunar al calendario solar.Comprenda la lógica de conversión de los calendarios lunar y solar y la conversión de los meses bisiestos.
    El calendario lunar, conocido como calendario Xia en la antigüedad, es el calendario tradicional actual de China. Es un calendario combinado del calendario lunar y el calendario solar. Tiene un ciclo de un mes basado en las fases cambiantes de la luna. Se refiere al año de retorno solar como la duración de un año, sumando los veinticuatro términos solares y estableciendo Yan. El año calendario promedio mensual corresponde al año tropical. -- Enciclopedia Baidu

1. Para conocer la tabla de cálculo de desviación del calendario lunisolar
    , consulte la tabla de desviación para calcular el número de meses y días y meses bisiestos de 1900 a 2100 definidos en la biblioteca de Python que se utiliza a continuación. ¿Qué pasa después de 2100?

2. La biblioteca zhdate
    utiliza números para identificar el número de días del mes de 1900 a 2100, si hay un mes bisiesto y la lista de días del mes bisiesto, y calcula la desviación para obtener el día del calendario lunar.

from zhdate import ZhDate
from datetime import datetime

print(ZhDate.from_datetime(datetime(2023, 9, 17)))
print(ZhDate(2023, 9, 17).to_datetime())

>>>
======================================================
Lunar is:  农历2023年8月3日
Solar is:  2023-10-31 00:00:00

3. biblioteca de fechas lunares

  • Visualización del calendario solar y lunar de la fecha actual
import lunardate as ld
import time
from datetime import datetime

print('Today Solar is: ', time.strftime('%Y-%m-%d')) 
print('Today Lunar is: ', ld.LunarDate.today())


y = ld.LunarDate.today().year
m = ld.LunarDate.today().month
d = ld.LunarDate.today().day
sd = str(y) + '-' + str(m) + '-' + str(d)

print('Today Lunar is: ', datetime.strptime(sd, '%Y-%m-%d').date())

>>>
===========================================
Today Solar is:  2023-09-17
Today Lunar is:  LunarDate(2023, 8, 3, 0)
Today Lunar is:  2023-08-03
  • Convierta la fecha especificada (2023-01-01) a calendarios solares y lunares
import lunardate as ld
import time

print('Today is: ', time.strftime('%Y-%m-%d'))
td = [time.gmtime().tm_year, time.gmtime().tm_mon, time.gmtime().tm_mday]
print('Today Lunar is: ', ld.LunarDate.fromSolarDate(td[0],td[1],td[2]))
print('Today Solar is: ', ld.LunarDate(td[0],td[1],td[2]).toSolarDate())

>>>
=============================================
Today is:  2023-09-17
Today Lunar is:  LunarDate(2023, 8, 3, 0)
Today Solar is:  2023-10-31

4. Biblioteca lunar: asistente de creación de CSDN: del calendario solar de Python al calendario lunar

Nota: La versión china de la biblioteca lunar debería tener una versión de Python incorrecta y necesita muchas correcciones.

  • Instalar
pip install lunar-python
  • Codificación y ejecución de programas. 
from lunar import Lunar

# 创建阳历日期对象
date = Lunar.from_date(2022, 1, 1)

# 转换为阴历日期对象
lunar_date = date.to_lunar_date()

# 获取阴历日期信息
print(lunar_date.year, lunar_date.month, lunar_date.day, lunar_date.is_leap)

>>>
=================================================
    date = Lunar.from_date(2022, 1, 1)
AttributeError: type object 'Lunar' has no attribute 'from_date'
  • arreglo del fallo
from lunar import Lunar
from datetime import datetime

# 创建阳历日期对象
date = Lunar.from_date(2022, 1, 1)
date = datetime.now()

# 转换为阴历日期对象
lunar_date = date.to_lunar_date()
lunardate = Lunar.fromDate(date)
print(lunardate)

# 获取阴历日期信息
#print(lunar_date.year, lunar_date.month, lunar_date.day, lunar_date.is_leap)

>>>
===========================================
二〇二三年八月初三

5. biblioteca lunardate - Asistente de creación de CSDN: python 3 Convierta
    el calendario solar en información anual del calendario lunar como desviación (compensación) para generar el número de meses y días de 1900 a 2100, ya sea un año bisiesto, meses y días de año bisiesto, y calcular la fecha del calendario lunar correspondiente a la fecha del calendario solar.

  • Instalar
pip install lunardate
  • Codificación y ejecución de programas. 
import lunardate

# 定义阳历日期
year = 2023
month = 9
day = 17

# 将阳历日期转换为阴历日期
lunar_date = lunardate.LunarDate.fromSolarDate(year, month, day)

# 输出阴历日期
print("阴历日期为:", lunar_date.day, lunar_date.month, lunar_date.year)

# 输出阳历日期
solar_date = lunardate.LunarDate(year,month,day).toSolarDate()
print("阳历日期为:", solar_date.day, solar_date.month, solar_date.year)

>>>
==========================================
阴历日期为: 3 8 2023
阳历日期为: 31 10 2023

6. salto

  • Mes bisiesto, mes bisiesto, para el calendario lunar y calendario lunar.
    - Al calendario lunisolar se le añade un mes en los años bisiestos, y el método de los siete años bisiestos en diecinueve años: en los diecinueve años del calendario lunar, hay doce años ordinarios, un año ordinario tiene doce meses; hay siete bisiestos años, y un año bisiesto tiene trece meses.
    - Se agrega un mes al calendario lunar cada dos o tres años, es decir, se establece un mes bisiesto cada 2 o 3 años
    - mes bisiesto, el mes grande es el día 30 y el mes pequeño es el día 29
    - La tabla de meses bisiestos se refiere al  mes bisiesto (el concepto de calendario en el calendario lunisolar)_ Enciclopedia Baidu
  • Año bisiesto, Año bisiesto, para el calendario gregoriano
    - el año bisiesto tiene 366 días, el año ordinario tiene 365 días
    - el febrero bisiesto tiene 29 días, el febrero ordinario tiene 28 días
    - Año bisiesto ordinario: si el año del calendario gregoriano es múltiplo de 4 , y no es múltiplo de 100, es un año bisiesto (Por ejemplo, 2004, 2020, etc. son años bisiestos)
    - Año bisiesto ordinario: Si el año del calendario gregoriano es múltiplo de 4 y no múltiplo de 100, es un año bisiesto (como 2004, 2020, etc. son años bisiestos) -Referencia
    Año  bisiesto_Enciclopedia Baidu
yinput = input("输入年份:")
YEAR = int(yinput)
if (YEAR % 4 == 0 and YEAR % 100 != 0) or (YEAR % 400 == 0 and YEAR % 3200 != 0) or YEAR % 172800 == 0:    
# 似乎一直在用的是 (YEAR % 4 == 0 and YEAR % 100 != 0) or (YEAR % 400 == 0)
    print (YEAR, ": 闰年")
else:
    print (YEAR, ": 平年")

========================================
>>>
输入年份:2020
2020 : 闰年

>>>
输入年份:1000
1000 : 平年

>>>
输入年份:2000
2000 : 闰年

>>>
输入年份:2023
2023 : 平年

 

Supongo que te gusta

Origin blog.csdn.net/u012841352/article/details/132953898
Recomendado
Clasificación