首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于农历的PHP/MySQL

用于农历的PHP/MySQL
EN

Stack Overflow用户
提问于 2018-08-03 16:41:53
回答 1查看 1.2K关注 0票数 2

我正在使用Yii2和MySQL制作一个农历应用程序。表中有两个字段: normal_date和lunar_date (类型为DATE)。这里出现的问题是:在正常的历法中,1950-04-16应该是农历的1950-02-30。PHP类或DateTime日期类型都不接受。我想问的是,我应该使用什么类型来存储lunar_date数据,以及我应该使用什么PHP库来处理这类数据。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 17:54:31

您不能使用公历日期来存储中国农历日期,因为它们遵循不同的规则,正如您试图存储1950-02-30时所显示的那样。另外,在MySQL和PHP中都可以添加一些日期的操作是不兼容的。

所以你主要有两个选择:

  • 将月球日期处理并存储为字符串,如"1950-02-30",或
  • 将月球日期作为整数的三倍来处理和存储,如SMALLINT和MySQL中的两个TINYINTs,以及在MySQL中具有3个数字属性的class (为了清洁起见,也可以传递大约3个变量)。

让我提到,您可能会发现将日期转换为日历转换的最常见的中间表示形式(即朱利安日号 )是有用的。在PHP中有gregoriantojdjdtogregorian,在MySQL中可以使用TO_DAYS(gregorian_date) + 1721060FROM_DAYS(julian_day_number - 1721060)。不幸的是,中文日历中没有类似的东西(尽管它适用于PHP中的希伯来日历),所以这就是你的艺术之源。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51676918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档