You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DateTimeExtension.cs 8.4 KiB

2 weken geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. using System;
  2. using System.Globalization;
  3. namespace Infrastructure
  4. {
  5. public static class DateTimeExtension
  6. {
  7. public static long ConvertToTimestamp(this DateTime value)
  8. {
  9. long epoch = (value.Ticks - 621355968000000000) / 10000000;
  10. return epoch;
  11. }
  12. public static DateTime? ConvertShamsiToMiladi(string date)
  13. {
  14. try
  15. {
  16. date = date.Replace("-", "/").Replace(".", "/");
  17. var persianYear = GetPersianYear(DateTime.Now);
  18. var parts = date.Split('/');
  19. var year = Convert.ToInt16(parts[0]);
  20. var month = Convert.ToInt16(parts[1]);
  21. var day = Convert.ToInt16(parts[2]);
  22. if (day > 1300)
  23. {
  24. var temp = year;
  25. year = day;
  26. day = temp;
  27. }
  28. if (persianYear < 1410 && year < 10)
  29. year += 1400;
  30. else if (persianYear < 1410 && year > 10 && year < 100)
  31. year += 1300;
  32. else if (year + 1400 <= persianYear)
  33. year += 1400;
  34. else if (year < 1300)
  35. year += 1300;
  36. PersianCalendar persianCalendar = new PersianCalendar();
  37. return persianCalendar.ToDateTime(year, month, day, 0, 0, 0, 0);
  38. }
  39. catch
  40. {
  41. return null;
  42. }
  43. }
  44. public static string ComputedDateTime(this DateTime InsertDateTime)
  45. {
  46. PersianCalendar persianCalendar = new PersianCalendar();
  47. int year = persianCalendar.GetYear(InsertDateTime);
  48. int month = persianCalendar.GetMonth(InsertDateTime);
  49. int dayOfMonth = persianCalendar.GetDayOfMonth(InsertDateTime);
  50. int hour = persianCalendar.GetHour(InsertDateTime);
  51. int minute = persianCalendar.GetMinute(InsertDateTime);
  52. int second = persianCalendar.GetSecond(InsertDateTime);
  53. object[] objArray = new object[] { year, null, null, null, null, null };
  54. objArray[1] = (month < 10 ? string.Format("0{0}", month) : month.ToString());
  55. objArray[2] = (dayOfMonth < 10 ? string.Format("0{0}", dayOfMonth) : dayOfMonth.ToString());
  56. objArray[3] = (hour < 10 ? string.Format("0{0}", hour) : hour.ToString());
  57. objArray[4] = (minute < 10 ? string.Format("0{0}", minute) : minute.ToString());
  58. objArray[5] = (second < 10 ? string.Format("0{0}", second) : second.ToString());
  59. return string.Format("{0}-{1}-{2}-{3}{4}{5}", objArray);
  60. }
  61. public static long ConvertToTimeStamp(DateTime value)
  62. {
  63. DateTime dateTime = TimeZoneInfo.ConvertTime(value, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
  64. TimeZone.CurrentTimeZone.GetDaylightChanges(dateTime.Year);
  65. dateTime = dateTime.AddHours(8);
  66. DateTime dateTime1 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  67. DateTime localTime = dateTime1.ToLocalTime();
  68. return (long)Convert.ToDouble((dateTime - localTime).TotalSeconds);
  69. }
  70. public static string GetDayName(this DayOfWeek day)
  71. {
  72. switch (day)
  73. {
  74. case DayOfWeek.Sunday:
  75. {
  76. return "یک شنبه";
  77. }
  78. case DayOfWeek.Monday:
  79. {
  80. return "دوشنبه";
  81. }
  82. case DayOfWeek.Tuesday:
  83. {
  84. return "سه شنبه";
  85. }
  86. case DayOfWeek.Wednesday:
  87. {
  88. return "چهار شنبه";
  89. }
  90. case DayOfWeek.Thursday:
  91. {
  92. return "پنج شنبه";
  93. }
  94. case DayOfWeek.Friday:
  95. {
  96. return "جمعه";
  97. }
  98. case DayOfWeek.Saturday:
  99. {
  100. return "شنبه";
  101. }
  102. }
  103. return "";
  104. }
  105. public static string GetMonthName(this int month)
  106. {
  107. switch (month)
  108. {
  109. case 1:
  110. {
  111. return "فروردین";
  112. }
  113. case 2:
  114. {
  115. return "اردیبهشت";
  116. }
  117. case 3:
  118. {
  119. return "خرداد";
  120. }
  121. case 4:
  122. {
  123. return "تیر";
  124. }
  125. case 5:
  126. {
  127. return "امرداد";
  128. }
  129. case 6:
  130. {
  131. return "شهریور";
  132. }
  133. case 7:
  134. {
  135. return "مهر";
  136. }
  137. case 8:
  138. {
  139. return "آبان";
  140. }
  141. case 9:
  142. {
  143. return "آذر";
  144. }
  145. case 10:
  146. {
  147. return "دی";
  148. }
  149. case 11:
  150. {
  151. return "بهمن";
  152. }
  153. case 12:
  154. {
  155. return "اسفند";
  156. }
  157. }
  158. return "";
  159. }
  160. public static string GetPersianDate(this DateTime value, bool showDayName, bool showMonthName, bool showTime, bool fromTripCreationTime = false)
  161. {
  162. PersianCalendar persianCalendar = new PersianCalendar();
  163. int year = persianCalendar.GetYear(value);
  164. int month = persianCalendar.GetMonth(value);
  165. int dayOfMonth = persianCalendar.GetDayOfMonth(value);
  166. string str = string.Format((showMonthName ? "{2} {1} {0}" : "{0}/{1}/{2}"), year, (showMonthName ? month.GetMonthName() : month.ToString("")), dayOfMonth);
  167. if (fromTripCreationTime)
  168. ;
  169. if (showDayName)
  170. {
  171. str = string.Format("{0} {1}", persianCalendar.GetDayOfWeek(value).GetDayName(), str);
  172. }
  173. if (showTime)
  174. {
  175. str = string.Format("{0} ساعت {1}:{2}", str, value.Hour, value.Minute);
  176. }
  177. return str;
  178. }
  179. public static int GetPersianYear(this DateTime value)
  180. {
  181. PersianCalendar persianCalendar = new PersianCalendar();
  182. int year = persianCalendar.GetYear(value);
  183. return year;
  184. }
  185. public static string GetPersianDate(this DateTime value)
  186. {
  187. if (value == DateTime.MinValue)
  188. return "";
  189. try
  190. {
  191. return value.GetPersianDate(false, false, false);
  192. }
  193. catch (Exception)
  194. {
  195. return "";
  196. }
  197. }
  198. public static string GetPersianDate(this DateTime value, bool showDayName)
  199. {
  200. return value.GetPersianDate(showDayName, false, false);
  201. }
  202. public static string GetPersianDate(this DateTime value, bool showDayName, bool showTime)
  203. {
  204. return value.GetPersianDate(showDayName, false, showTime);
  205. }
  206. public static int GetPersianMonth(this DateTime value)
  207. {
  208. PersianCalendar persianCalendar = new PersianCalendar();
  209. int month = persianCalendar.GetMonth(value);
  210. return month;
  211. }
  212. public static int GetPersianMonthLenght(this DateTime value)
  213. {
  214. PersianCalendar persianCalendar = new PersianCalendar();
  215. int month = persianCalendar.GetMonth(value);
  216. if (month <= 6)
  217. return 31;
  218. if (month == 12)
  219. return 29;
  220. return 30;
  221. }
  222. public static int GetPersianDay(this DateTime value)
  223. {
  224. PersianCalendar persianCalendar = new PersianCalendar();
  225. int d = persianCalendar.GetDayOfMonth(value);
  226. return d;
  227. }
  228. }
  229. }