TermUtil.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace CP.Common
  7. {
  8. /// <summary>
  9. /// 彩种期数计算相关
  10. /// </summary>
  11. public class TermUtil
  12. {
  13. /// <summary>
  14. /// 获取下一期号
  15. /// </summary>
  16. /// <param name="qi"></param>
  17. /// <param name="lottery"></param>
  18. /// <returns></returns>
  19. public static long GetNextQi(long qi, string lottery)
  20. {
  21. long year = qi / 1000;
  22. long endQi = year * 1000 + 153;
  23. if (lottery == "3d" || lottery == "p3" || lottery == "hc1")
  24. {
  25. endQi = endQi + 205;
  26. if (2014 == year)//2014年少一期
  27. { endQi = endQi - 1; }
  28. }
  29. if (0 == (year % 4))
  30. { endQi = endQi + 1; }
  31. if (qi < endQi)
  32. return qi + 1;
  33. return (year + 1) * 1000 + 1;
  34. }
  35. /// <summary>
  36. /// 获取上一期号
  37. /// </summary>
  38. /// <param name="qi"></param>
  39. /// <param name="lottery"></param>
  40. /// <returns></returns>
  41. public static long GetLastQi(long qi, string lottery)
  42. {
  43. long year = qi / 1000;
  44. long minQi = year * 1000 + 001;
  45. long lastQi = qi - 1;
  46. if (minQi > lastQi)
  47. {
  48. year = year - 1;
  49. long endQi = year * 1000 + 153;
  50. if (lottery == "3d" || lottery == "p3")
  51. {
  52. endQi = endQi + 205;
  53. if (2014 == year)//2014年少一期
  54. { endQi = endQi - 1; }
  55. }
  56. if (0 == (year % 4))
  57. { endQi = endQi + 1; }
  58. lastQi = endQi;
  59. }
  60. return lastQi;
  61. }
  62. /// <summary>
  63. /// 获取下一期号限制P3/3D
  64. /// </summary>
  65. /// <param name="localQi">必须为最新已开奖的期数</param>
  66. /// <returns></returns>
  67. public static long GetLatestQi(long localQi)
  68. {
  69. int qi = Convert.ToInt32(localQi);
  70. if (0 < qi)
  71. {
  72. DateTime now = DateTime.Now;
  73. int year = qi / 1000;
  74. DateTime sDate = new DateTime(year, 12, 31, 20, 30, 0);
  75. DateTime eDate = new DateTime(year + 1, 1, 1, 20, 30, 0);
  76. if (now > sDate && now < eDate)
  77. {
  78. qi = (year + 1) * 1000 + 1;
  79. }
  80. else
  81. {
  82. qi = qi + 1;
  83. }
  84. }
  85. return qi;
  86. }
  87. }
  88. }