public static DateTimeOffset ParseDateTime(string key, DateTimeKeyFlags flags) { DateTimeOffset dateTime; if (!TryParseDateTime(key, flags, out dateTime)) { throw new Exception($"Unable to parse key: {key}"); } return(dateTime); }
public static bool TryParseDateTimeKey(string key, DateTimeKeyFlags flags, DateTimeKey dateTimeKey) { DateTimeOffset dateTime; if (!TryParseDateTime(key, flags, out dateTime)) { return(false); } dateTimeKey = new DateTimeKey(dateTime, flags); return(true); }
public static bool TryParseDateTime(string key, DateTimeKeyFlags flags, out DateTimeOffset dateTime) { var hours = DateTimeKeyFlags.Hours == (flags & DateTimeKeyFlags.Hours); var minutes = DateTimeKeyFlags.Minutes == (flags & DateTimeKeyFlags.Minutes); var provider = CultureInfo.InvariantCulture; if (flags == DateTimeKeyFlags.Date) { return(DateTimeOffset.TryParseExact(key, "yyyyMMdd", provider, DateTimeStyles.AdjustToUniversal, out dateTime)); } else { return(DateTimeOffset.TryParseExact(key, @"yyyyMMdd\THHmm", provider, DateTimeStyles.AdjustToUniversal, out dateTime)); } }
public static string GetKey(DateTimeOffset dateTime, DateTimeKeyFlags flags) { var builder = new StringBuilder(); if (DateTimeKeyFlags.Date == (flags & DateTimeKeyFlags.Date)) { builder.Append(dateTime.Year.ToString("0000")); builder.Append(dateTime.Month.ToString("00")); builder.Append(dateTime.Day.ToString("00")); } var hours = DateTimeKeyFlags.Hours == (flags & DateTimeKeyFlags.Hours); var minutes = DateTimeKeyFlags.Minutes == (flags & DateTimeKeyFlags.Minutes); if (hours || minutes) { builder.Append("T"); builder.Append(hours ? dateTime.Hour.ToString("00") : "00"); builder.Append(minutes ? dateTime.Minute.ToString("00") : "00"); } return(builder.ToString()); }
public static DateTimeKey ParseDateTimeKey(string key, DateTimeKeyFlags flags) { var dateTime = ParseDateTime(key, flags); return(new DateTimeKey(dateTime, flags)); }
public DateTimeKey(DateTimeOffset dateTime, DateTimeKeyFlags flags) { Key = GetKey(dateTime, flags); Flags = flags; }