繁体   English   中英

农历日历的PHP / MySQL

[英]PHP/MySQL for Lunar calendar

我正在使用Yii2,而MySQL确实制作了农历日历应用程序。 我在表中有2个字段:normal_date和lunar_date(类型为DATE)。 在这里出现问题:对于普通日历,日期1950-04-16应该是农历中的日期1950-02-30。 PHP DateTime类或MySQL DATE类型都不接受。 我想问的是,我应该使用哪种类型来存储lunar_date数据,以及应该使用哪种PHP库来处理此类数据。

我的应用程序必须非常正常地在normal_date和lunar_date之间进行转换,并且我的数据库将非常庞大,因为我将存储从1950年到2050年的数据。

您不能使用公历日期存储中国阴历日期,因为它们遵循不同的规则,正如您尝试存储1950-02-30清楚显示的那样。 另外,在MySQL和PHP中都可以进行的操作(例如在日期中增加天数)将是不兼容的。

因此,您主要有两种选择:

  • 将农历日期处理并存储为字符串,例如"1950-02-30" ,或者
  • 处理和存储农历日期为整数的三进制,例如MySQL中的SMALLINT和两个TINYINT ,以及PHP中具有3个数字属性的class (为了保持整洁,但也可以传递3个变量)。

让我提到,您可能会发现将日期转换为日历转换的最常见中间表示形式(即儒略日编号)很有用。 在PHP中,您具有gregoriantojdjdtogregorian ,在MySQL中,您可以使用TO_DAYS(gregorian_date) + 1721060FROM_DAYS(julian_day_number - 1721060) 不幸的是,中文日历没有类似的东西(尽管PHP中的希伯来日历也没有),因此您可以在这里欣赏精美的艺术品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM