TermUtil.cs 2.6 KB

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