public string GetFormatterDateTime(int labelIndex, double value, double minValue, double maxValue) { var timestamp = (int)value; var dateTime = DateTimeUtil.GetDateTime(timestamp); var dateString = string.Empty; if (string.IsNullOrEmpty(numericFormatter)) { dateString = DateTimeUtil.GetDateTimeFormatString(dateTime, maxValue - minValue); } else { dateString = dateTime.ToString(numericFormatter); } if (!string.IsNullOrEmpty(m_Formatter)) { var content = m_Formatter; FormatterHelper.ReplaceAxisLabelContent(ref content, dateString); return(GetFormatterFunctionContent(labelIndex, value, m_TextLimit.GetLimitContent(content))); } else { return(GetFormatterFunctionContent(labelIndex, value, m_TextLimit.GetLimitContent(dateString))); } }
/// <summary> /// 根据给定的最大最小时间戳范围,计算合适的Tick值 /// </summary> /// <param name="list"></param> /// <param name="minTimestamp"></param> /// <param name="maxTimestamp"></param> /// <param name="splitNumber"></param> internal static void UpdateTimeAxisDateTimeList(List <double> list, int minTimestamp, int maxTimestamp, int splitNumber) { list.Clear(); var range = maxTimestamp - minTimestamp; if (range <= 0) { return; } if (splitNumber <= 0) { splitNumber = 1; } var dtMin = DateTimeUtil.GetDateTime(minTimestamp); var dtMax = DateTimeUtil.GetDateTime(maxTimestamp); if (range >= ONE_YEAR * MIN_TIME_SPLIT_NUMBER) { var num = Math.Max(range / (splitNumber * ONE_YEAR), 1); var dtStart = new DateTime(dtMin.Year + 1, 1, 1); while (dtStart.Ticks < dtMax.Ticks) { list.Add(DateTimeUtil.GetTimestamp(dtStart)); dtStart = dtStart.AddYears(num); } } else if (range >= ONE_MONTH * MIN_TIME_SPLIT_NUMBER) { var num = Math.Max(range / (splitNumber * ONE_MONTH), 1); var dtStart = new DateTime(dtMin.Year, dtMin.Month, 1).AddMonths(1); while (dtStart.Ticks < dtMax.Ticks) { list.Add(DateTimeUtil.GetTimestamp(dtStart)); dtStart = dtStart.AddMonths(num); } } else if (range >= ONE_DAY * MIN_TIME_SPLIT_NUMBER) { var tick = GetTickSecond(range, splitNumber, ONE_DAY); var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); } else if (range >= ONE_HOUR * MIN_TIME_SPLIT_NUMBER) { var tick = GetTickSecond(range, splitNumber, ONE_HOUR); var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); } else if (range >= ONE_MINUTE * MIN_TIME_SPLIT_NUMBER) { var tick = GetTickSecond(range, splitNumber, ONE_MINUTE); var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); } else { var tick = GetTickSecond(range, splitNumber, ONE_SECOND); var startTimestamp = (minTimestamp - minTimestamp % tick) + tick; AddTickTimestamp(list, startTimestamp, maxTimestamp, tick); } }