二次开发 >> 引擎API >> 自定义函数 >> 自定义函数把阳历转换成阴历

自定义函数把阳历转换成阴历

顶( )
最后更新日期: 人发表评论 (点击查看)
转农历日期,农历转换、二次开发、自定义函数,阴历转化为阳历
1. 问题描述
数据库保存的是阳历日期,在报表展示时希望把阴历转换成阴历,方便查询各种阴历节日的功能,如下图把阳历转换成阴历的效果。
2. 解决方案
首先定义一个可以将阳历转为阴历的类,然后自定义FineReport函数,在run方法中获取年月日参数并调用之前的类将阳历转为阴历,最终返回给报表。
3. 实现步骤
3.1 阳历转阴历的类
FineReport提供一个现成的农历日历工具类SolarToLunar,该类中通过today(int year, int month, int day)方法可将输入的年、月、日对应的阳历转为阴历日期,完整代码如下:
3.2 自定义FineReport函数
自定义函数Lunar扩展于AbstractFunction,并重写run方法,获得年月日参数值,调用农历日历工具类SolarToLunar的today方法,求得农历日期并返回,代码如下:
3.3 编译并运行
编译Lunar.java和SolarToLunar.java类生成Lunar.class和SolarToLunar.class文件拷贝至报表应用所在目录/WEB-INF/classes/com/fr/function下。
启动设计器,点击服务器|函数管理器,新增函数取名为Lunar,选择Lunar.class类,如下图:
此时自定义函数便定义好了,您可以在设计器中使用该函数。
在单元格中写入公式=Lunar(2011,7,11),预览模板便可以看到把日期2011年7月11日阳历转换成阴历了。
若数据库日期类型字段如图:拖到模板设计界面,设置高级属性,在自定义显示值里面输入公式Lunar(year($$$),month($$$),day($$$)),如下图设置,则可把保存在数据库里面的阳历日期转换成阴历了。
注:该自定义函数的日期类型参数只能是(2011,7,11)这个格式的日期,如果不相符合,则需要通过自定义显示将格式进行转换,如上所述。
 
 
 
 
   
文明发言,用心评论
 
应用此篇文章,您:
不费力
研究了一会
琢磨了好久
 
查看全部条>>
返回顶部
Copyright©2019 帆软软件有限公司
苏ICP备18065767号-3