PB日期函数合集:生肖、天干地支、星座与闰年

版权申诉
0 下载量 27 浏览量 更新于2024-08-12 收藏 43KB DOC 举报
"PB用一条语句写成的有关日期函数(生肖、天干地支、星座、闰年等).doc" 在PowerBuilder编程环境中,日期函数的处理是开发者经常遇到的任务。以下是一些利用单条语句实现的高效日期功能,它们涵盖了生肖、天干地支、星座以及闰年的计算: 1. 生肖函数: 这个函数通过将给定的年份减去1900(因为1900年是公历生肖周期的起点),然后取模12来确定对应的生肖位置,最后从预填充的字符串中提取相应的生肖字符。例如,对于1990年,返回的是"马"。 ```pb mid(fill('鼠牛虎兔龙蛇马羊猴鸡狗猪',48),(mod(ls_year-1900,12)+13)*2-1,2) ``` 2. 天干地支函数: 天干地支的计算同样涉及到年份的处理。年份减去1924后取模10得到天干位置,取模12得到地支位置,再从对应的字符串中提取字符。例如,对于1990年,返回的是"庚午"。 ```pb mid('甲乙丙丁戊己庚辛壬癸',40,(mod(ls_year-1924,10)+11)*2-1,2) + mid('子丑寅卯辰巳午未申酉戌亥',48,(mod(ls_year-1924,12)+13)*2-1,2) ``` 3. 星座函数: 这个函数基于月份和日期,考虑了每个星座的起始日期。它会计算出星座名称在字符串中的位置并返回。例如,对于2月15日,返回的是"水瓶座"。 ```pb mid("摩羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手摩羯", (month(ls_date) + sign(sign(day(ls_date) - (19 + integer(mid('102123444423', month(ls_date), 1)))) + 1)) * 4 - 3, 4) + '座' ``` 4. 闰年判断函数: 判断闰年的标准是:能被4整除但不能被100整除,或者能被400整除。这个函数使用一系列的取模和比较操作来确定是否为闰年。例如,对于1900年,返回0(非闰年),对于2000年,返回1(闰年)。 ```pb abs(sign(mod(sign(mod(abs(ls_year),4)) + sign(mod(abs(ls_year),100)) + sign(mod(abs(ls_year),400)),2)) - 1) ``` 5. 某月天数函数: 根据公历规则,这个函数根据年份和月份来计算该月的天数。例如,对于2月,会根据是否为闰年来确定天数。 ```pb integer(28 + integer(mid('3' + string(abs(sign(mod(sign(mod(abs(year(ls_date)),4)) + sign(mod(abs(year(ls_date)),100)) + sign(mod(abs(year(ls_date)),400)),2))) - 1)) + '3232332323', month(ls_date), 1))) ``` 6. 某月最后一天日期函数: 这个函数会返回给定日期所在月份的最后一天。虽然代码没有给出完整实现,但通常会结合上述某月天数函数来获取这个日期。 ```pb date(year(ls_date), month(ls_date), <计算出的该月最后一天>) ``` 以上这些单行日期处理函数展示了PowerBuilder中高效编程的可能性,使得在处理日期逻辑时可以更加简洁和直观。不过要注意,这些函数适用于PB6.5,如果在PB8.0或更高版本中使用,可能需要根据实际字节编码进行调整,特别是涉及到字符串填充和截取的部分。