php/mysql用于农历

bhmjp9jg  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(328)

我正在用yii2和mysql做一个农历应用程序。表中有两个字段:正常日期和农历日期(日期类型)。问题就出现了:在正常的日历中,日期1950-04-16应该是农历的1950-02-30。php datetime类和mysql date类型都不接受这一点。我想问的是,我应该使用什么类型来存储农历日数据,以及我应该使用什么php库来处理此类数据。
我的应用程序必须在正常日期和农历日期之间转换,而且我的数据库将非常大,因为我将存储1950年到2050年的数据。

toe95027

toe950271#

您不能使用公历日期来存储中国的农历日期,因为它们遵循不同的规则,就像您尝试存储的那样 1950-02-30 清楚地显示。另外,在mysql和php中都可能的向日期添加天数之类的操作也不兼容。
所以你主要有两个选择:
将农历日期作为字符串进行处理和存储,如 "1950-02-30" ,或
以整数的三倍形式处理和存储农历日期,如 SMALLINT 还有两个 TINYINT mysql中的s和 class 在php中有3个数字属性(为了保持整洁,但也可以传递3个变量)。
让我提一下,您可能会发现将日期转换为日历转换最常见的中间表示形式很有用,即儒略日数。在php中 gregoriantojd 以及 jdtogregorian ,在mysql中可以使用 TO_DAYS(gregorian_date) + 1721060 以及 FROM_DAYS(julian_day_number - 1721060) . 不幸的是,在中国的日历中没有类似的东西(尽管在php中希伯来的日历是这样的),所以这就是你的艺术开始的地方。

相关问题