f_get_month_day.srf 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. $PBExportHeader$f_get_month_day.srf
  2. global type f_get_month_day from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_get_month_day (long arg_mth, integer arg_type, ref datetime arg_ref_datetime, ref string arg_msg)
  6. end prototypes
  7. global function integer f_get_month_day (long arg_mth, integer arg_type, ref datetime arg_ref_datetime, ref string arg_msg);Int rslt = 1
  8. Long ll_year,ll_month,ll_lastday
  9. Boolean ifyear = FALSE
  10. ll_year = Long(Left(String(arg_mth),4))
  11. ll_month = Long(Right(String(arg_mth),2))
  12. IF Not (ll_month >= 1 AND ll_month <= 12) THEN
  13. arg_msg = '非法的月份'
  14. rslt = 0
  15. GOTO ext
  16. END IF
  17. CHOOSE CASE arg_type
  18. CASE 0 //当月第一天
  19. arg_ref_datetime = datetime(date(string(ll_year,'0000') + '-'+string(ll_month,'00') + '-01'),time(0))
  20. CASE 1 //当月最后一天
  21. IF Mod(ll_year,4) <> 0 THEN
  22. ifyear = FALSE
  23. ELSEIF Mod(ll_year,100) <> 0 THEN
  24. ifyear = TRUE
  25. ELSEIF Mod(ll_year,400) <> 0 THEN
  26. ifyear = FALSE
  27. ELSE
  28. ifyear = TRUE
  29. END IF
  30. CHOOSE CASE ll_month
  31. CASE 1,3,5,7,8,10,12
  32. ll_lastday = 31
  33. CASE 2
  34. IF ifyear THEN
  35. ll_lastday = 29
  36. ELSE
  37. ll_lastday = 28
  38. END IF
  39. CASE 4,6,9,11
  40. ll_lastday = 30
  41. END CHOOSE
  42. arg_ref_datetime = datetime(date(string(ll_year,'0000') + '-'+string(ll_month,'00') + '-'+string(ll_lastday,'00')),time('23:59:59'))
  43. END CHOOSE
  44. ext:
  45. RETURN rslt
  46. end function