/// <summary> /// /// </summary> /// <param name="time"></param> /// <param name="shift"></param> /// <returns></returns> public static Range Shift(Range time, string shift) { var shiftedAbsTime = $"{NOW}-{shift}"; var shiftedAbsTimeInMs = (( DateTimeOffset )DateTimeMathParser .ToDateTime(shiftedAbsTime)) .ToUnixTimeMilliseconds(); var nowInMs = (( DateTimeOffset )DateTime.Now).ToUnixTimeMilliseconds(); var shiftInMs = nowInMs - shiftedAbsTimeInMs; var tf = DateTimeMathParser .ToDateTime(time.From, false) .Value .AddMilliseconds(-shiftInMs); var tt = DateTimeMathParser .ToDateTime(time.To, true) .Value .AddMilliseconds(-shiftInMs); return(new Range( tf.ToString(DateTimeMathParser.DEFAULT_DATE_TIME_FORMAT), tt.ToString(DateTimeMathParser.DEFAULT_DATE_TIME_FORMAT))); }
/// <summary> /// /// </summary> /// <returns></returns> public static string GetTimeAxeLabelFormat(Range r) { var from = DateTimeMathParser.ToDateTime(r.From, false).Value; var to = DateTimeMathParser.ToDateTime(r.To, true).Value; var diff = to - from; if (diff <= TimeSpan.FromMinutes(5)) { return(AXES_LABEL_FORMAT0); } if (diff <= TimeSpan.FromHours(24)) { return(AXES_LABEL_FORMAT1); } if (diff <= TimeSpan.FromDays(7)) { return(AXES_LABEL_FORMAT2); } if (diff <= TimeSpan.FromDays(365)) { return(AXES_LABEL_FORMAT3); } return(AXES_LABEL_FORMAT4); }
/// <summary> /// /// </summary> /// <param name="r"></param> /// <returns></returns> public static string ToLabel(Range range) { var quickKey = ToLabel(range.From, range.To); _dictQuickRanges.TryGetValue(quickKey, out Range option); if (null != option) { return(option.Display); } if (IsDateTime(range.From) && IsDateTime(range.To)) { return(ToLabel(Format(range.From), Format(range.To))); } if (IsDateTime(range.From)) { var to = DateTimeMathParser.ToDateTime(range.To, true); return(to.HasValue ? ToLabel(Format(range.From), to.Value.FromNow()) : string.Empty); } if (IsDateTime(range.To)) { var from = DateTimeMathParser.ToDateTime(range.From, false); return(from.HasValue ? ToLabel(from.Value.FromNow(), Format(range.To)) : string.Empty); } if (range.To == NOW) { return(ToRange(range.From).Display); } return(quickKey); }