| | | 1 | | using System; |
| | | 2 | | using Microsoft.OData.Edm; |
| | | 3 | | |
| | | 4 | | namespace SVETA.Api.Helpers |
| | | 5 | | { |
| | | 6 | | public static class DateTimeConverterExtension |
| | | 7 | | { |
| | | 8 | | public static DateTime ToMoscowTime(this DateTime dateTime) |
| | 306 | 9 | | { |
| | 306 | 10 | | string displayName = "Moscow Standard Time"; |
| | 306 | 11 | | string standartName = "(UTC+3) Moscow Standard Time"; |
| | 306 | 12 | | string daylightName = "Moscow Standard Time"; |
| | 306 | 13 | | TimeZoneInfo cstZone = TimeZoneInfo.CreateCustomTimeZone(displayName, new TimeSpan(3, 0,0), standartName, da |
| | | 14 | | try |
| | 306 | 15 | | { |
| | 306 | 16 | | if (dateTime != DateTime.MinValue) |
| | 306 | 17 | | return TimeZoneInfo.ConvertTimeFromUtc(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc), cstZone); |
| | | 18 | | else |
| | 0 | 19 | | return dateTime; |
| | | 20 | | } |
| | 0 | 21 | | catch (Exception) |
| | 0 | 22 | | { |
| | 0 | 23 | | return DateTime.MinValue; |
| | | 24 | | } |
| | 306 | 25 | | } |
| | | 26 | | |
| | | 27 | | public static DateTime StartOfDay(this DateTime dateTime) => |
| | 0 | 28 | | DateTime.SpecifyKind( new DateTime(dateTime.Year, |
| | 0 | 29 | | dateTime.Month, |
| | 0 | 30 | | dateTime.Day, |
| | 0 | 31 | | 0, |
| | 0 | 32 | | 0, |
| | 0 | 33 | | 0, |
| | 0 | 34 | | 0), DateTimeKind.Local); |
| | | 35 | | public static DateTime EndOfDate(this DateTime dateTime) => |
| | 0 | 36 | | DateTime.SpecifyKind(new DateTime(dateTime.Year, |
| | 0 | 37 | | dateTime.Month, |
| | 0 | 38 | | dateTime.Day, |
| | 0 | 39 | | 23, |
| | 0 | 40 | | 59, |
| | 0 | 41 | | 59, |
| | 0 | 42 | | 999), DateTimeKind.Local); |
| | | 43 | | |
| | | 44 | | /// <summary> |
| | | 45 | | /// Возвращает Datetime.MinValue если значение null или minValue, иначе дату и начало дня с учетом часового пояс |
| | | 46 | | /// </summary> |
| | | 47 | | /// <param name="dateTime">Дата и время с часовым поясом</param> |
| | | 48 | | /// <returns>объект datetime</returns> |
| | 0 | 49 | | public static DateTime GetStartOfDate(this DateTimeOffset dateTime) => dateTime != DateTimeOffset.MinValue ? dat |
| | | 50 | | |
| | | 51 | | /// <summary> |
| | | 52 | | /// Возвращает Datetime.MinValue если значение null или minValue, иначе дату и конец дня с учетом часового пояса |
| | | 53 | | /// </summary> |
| | | 54 | | /// <param name="dateTime">Дата и время с часовым поясом</param> |
| | | 55 | | /// <returns>объект datetime</returns> |
| | 0 | 56 | | public static DateTime GetEndOfDate(this DateTimeOffset dateTime) => dateTime != DateTimeOffset.MinValue ? dateT |
| | | 57 | | |
| | | 58 | | /// <summary> |
| | | 59 | | /// Проверяет, является ли значение null или DateTime.MinValue |
| | | 60 | | /// </summary> |
| | | 61 | | /// <param name="dateTime">Дата и время с часовым поясом</param> |
| | | 62 | | /// <returns>значение true/false</returns> |
| | 20 | 63 | | public static bool IsNullOrMinValue(this DateTime? dateTime) => !dateTime.HasValue || dateTime == DateTime.MinVa |
| | | 64 | | |
| | | 65 | | /// <summary> |
| | | 66 | | /// Возвращает Datetime.MinValue если значение null или minValue, иначе дату |
| | | 67 | | /// </summary> |
| | | 68 | | /// <param name="dateTime">Дата и время с часовым поясом</param> |
| | | 69 | | /// <returns>объект datetime</returns> |
| | 0 | 70 | | public static DateTime GetDate(this DateTimeOffset dateTime) => dateTime != DateTimeOffset.MinValue ? dateTime.D |
| | | 71 | | |
| | | 72 | | /// <summary> |
| | | 73 | | /// Возвращает строку в формате ISO8601 или null, если значение null или minValue |
| | | 74 | | /// </summary> |
| | | 75 | | /// <param name="dateTime">Дата и время с часовым поясом</param> |
| | | 76 | | /// <returns>строка в формате iso8601</returns> |
| | 0 | 77 | | public static string ToISOString(this DateTimeOffset dateTime) => dateTime != DateTimeOffset.MinValue ? dateTime |
| | | 78 | | } |
| | | 79 | | } |