TradeDayPlan.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. //----------------------------------------------------------------
  6. //Module Name: $safeprojectname$
  7. //Purpose:
  8. //CopyRight: Muchinfo
  9. //History:
  10. //----------------------------------------------------------------
  11. //DateTime 2016/6/21 17:32:21
  12. //Author
  13. //Description Create
  14. //----------------------------------------------------------------
  15. using Muchinfo.MTPClient.Data.Helper;
  16. namespace Muchinfo.MTPClient.Data.Quote
  17. {
  18. public class TradeDayPlan
  19. {
  20. // MarketTypeID 市场类型ID
  21. //tradeday, 交易日
  22. // opentime , 开市时间
  23. // ReckonTime, 结算时间
  24. // nextTradeDay, 下 一个交易日
  25. // nextReckonTime,
  26. // m.InReckon
  27. /// <summary>
  28. /// 市场类型ID
  29. /// </summary>
  30. [PropertyDisc("MarketTypeID")]
  31. public long MarketTypeID { get; set; }
  32. /// <summary>
  33. /// 交易日
  34. /// </summary>
  35. [PropertyDisc("TradeDay")]
  36. public DateTime TradeDay { get; set; }
  37. /// <summary>
  38. /// 开市时间
  39. /// </summary>
  40. [PropertyDisc("OpenTime")]
  41. public string OpenTime { get; set; }
  42. /// <summary>
  43. /// 开始周几
  44. /// </summary>
  45. [PropertyDisc("OpenWeekDay")]
  46. public int OpenWeekDay { get; set; }
  47. /// <summary>
  48. /// 结算时间
  49. /// </summary>
  50. [PropertyDisc("ReckonTime")]
  51. public string ReckonTime { get; set; }
  52. /// <summary>
  53. /// 结束周几
  54. /// </summary>
  55. [PropertyDisc("CLOSEWEEKDAY")]
  56. public int CloseWeekDay { get; set; }
  57. /// <summary>
  58. /// 运行阶段
  59. /// </summary>
  60. [PropertyDisc("RunStep")]
  61. public int RunStep { get; set; }
  62. /// <summary>
  63. /// 起始周几
  64. /// </summary>
  65. [PropertyDisc("STARTWEEKDAY")]
  66. public int StartWeekDay { get; set; }
  67. /// <summary>
  68. /// 结束周几
  69. /// </summary>
  70. [PropertyDisc("ENDWEEKDAY")]
  71. public int EndWeekDay { get; set; }
  72. /// <summary>
  73. /// 开始时间 HH:mm
  74. /// </summary>
  75. [PropertyDisc("STARTTIME")]
  76. public string Starttime { get; set; }
  77. /// <summary>
  78. /// 结束时间 HH:mm
  79. /// </summary>
  80. [PropertyDisc("ENDTIME")]
  81. public string EndTime { get; set; }
  82. /// <summary>
  83. /// 结算延时时间
  84. /// </summary>
  85. [PropertyDisc("RECKONDELAY")]
  86. public string ReckenDelay { get; set; }
  87. /// <summary>
  88. /// 获取开始时间
  89. /// </summary>
  90. /// <returns></returns>
  91. public DateTime GetOpenTime()
  92. {
  93. if (this.TradeDay == DateTime.MinValue)
  94. {
  95. throw new Exception("traday is not valid !" + TradeDay);
  96. }
  97. var open = OpenWeekDay - (int)TradeDay.DayOfWeek;
  98. var openTime = this.TradeDay.AddDays(open);
  99. if (!DateTime.TryParse(openTime.ToString("yyyy-MM-dd ") + OpenTime, out openTime))
  100. {
  101. throw new Exception("openTime is not valid !:" + openTime.ToString("yyyy-MM-dd ") + OpenTime);
  102. }
  103. return openTime;
  104. }
  105. /// <summary>
  106. /// 获取结束时间
  107. /// </summary>
  108. /// <returns></returns>
  109. public DateTime GetReckonTime()
  110. {
  111. if (this.TradeDay == DateTime.MinValue)
  112. {
  113. throw new Exception("traday is not valid !" + TradeDay);
  114. }
  115. var close = CloseWeekDay - (int)TradeDay.DayOfWeek;
  116. var closeTime = this.TradeDay.AddDays(close);
  117. if (!DateTime.TryParse(closeTime.ToString("yyyy-MM-dd ") + ReckonTime, out closeTime))
  118. {
  119. throw new Exception("closeTime is not valid !:" + closeTime.ToString("yyyy-MM-dd ") + ReckonTime);
  120. }
  121. return closeTime;
  122. }
  123. /// <summary>
  124. /// 获取开始时间
  125. /// </summary>
  126. /// <returns></returns>
  127. public DateTime GetStartTime()
  128. {
  129. if (this.TradeDay == DateTime.MinValue)
  130. {
  131. throw new Exception("traday is not valid !" + TradeDay);
  132. }
  133. var start = StartWeekDay - (int)TradeDay.DayOfWeek;
  134. var startTime = this.TradeDay.AddDays(start);
  135. if (!DateTime.TryParse(startTime.ToString("yyyy-MM-dd ") + Starttime, out startTime))
  136. {
  137. throw new Exception("traday is not valid !:" + startTime.ToString("yyyy-MM-dd ") + Starttime);
  138. }
  139. return startTime;
  140. }
  141. /// <summary>
  142. /// 获取结束时间
  143. /// </summary>
  144. /// <returns></returns>
  145. public DateTime GetEndTime()
  146. {
  147. if (this.TradeDay == DateTime.MinValue)
  148. {
  149. throw new Exception("traday is not valid !" + TradeDay);
  150. }
  151. var end = EndWeekDay - (int)TradeDay.DayOfWeek;
  152. var endTime = this.TradeDay.AddDays(end);
  153. if (!DateTime.TryParse(endTime.ToString("yyyy-MM-dd ") + EndTime, out endTime))
  154. {
  155. throw new Exception("traday is not valid !:" + endTime.ToString("yyyy-MM-dd ") + EndTime);
  156. }
  157. return endTime;
  158. }
  159. }
  160. }