我正在使用Yii2和MySQL制作一个农历应用程序。表中有两个字段: normal_date和lunar_date (类型为DATE)。这里出现的问题是:在正常的历法中,1950-04-16应该是农历的1950-02-30。PHP类或DateTime日期类型都不接受。我想问的是,我应该使用什么类型来存储lunar_date数据,以及我应该使用什么PHP库来处理这类数据。
我的应用程序必须在normal_date和lunar_date之间进行转换,而且我的数据库将非常大,因为我将存储从1950年到2050年的数据。
发布于 2018-08-03 17:54:31
您不能使用公历日期来存储中国农历日期,因为它们遵循不同的规则,正如您试图存储1950-02-30时所显示的那样。另外,在MySQL和PHP中都可以添加一些日期的操作是不兼容的。
所以你主要有两个选择:
"1950-02-30",或SMALLINT和MySQL中的两个TINYINTs,以及在MySQL中具有3个数字属性的class (为了清洁起见,也可以传递大约3个变量)。让我提到,您可能会发现将日期转换为日历转换的最常见的中间表示形式(即朱利安日号 )是有用的。在PHP中有gregoriantojd和jdtogregorian,在MySQL中可以使用TO_DAYS(gregorian_date) + 1721060和FROM_DAYS(julian_day_number - 1721060)。不幸的是,中文日历中没有类似的东西(尽管它适用于PHP中的希伯来日历),所以这就是你的艺术之源。
https://stackoverflow.com/questions/51676918
复制相似问题