public TimeItemCollection() { DateTime date = DateTime.Now; int month = date.Month; int day = date.Day; int hour = date.Hour; int min = date.Minute; int second = date.Second; for (int i = 1; i <= 12; i++) { Months.Add(new TimeItem() { Content = $"{i.ToString().PadLeft(2, '0')}月", Value = i, Angle = 30 * (i - month - 1) }); } for (int i = 1; i <= 31; i++) { Days.Add(new TimeItem() { Content = $"{i.ToString().PadLeft(2, '0')}天", Value = i, Angle = 360.0 / 31.0 * (i - day - 1) }); } for (int i = 0; i < 24; i++) { Hours.Add(new TimeItem() { Content = $"{i.ToString().PadLeft(2, '0')}点", Value = i, Angle = 15 * (i - hour - 1) }); } for (int i = 0; i < 60; i++) { Mins.Add(new TimeItem() { Content = $"{i.ToString().PadLeft(2, '0')}分", Value = i, Angle = 6 * (i - min - 1) }); } for (int i = 0; i < 60; i++) { Seconds.Add(new TimeItem() { Content = $"{i.ToString().PadLeft(2, '0')}秒", Value = i, Angle = 6 * (i - second - 1) }); } }
private void timer_Tick(object sender, EventArgs e) { Hrs = Math.Abs(DateTime.Now.Hour - 12); Mins = DateTime.Now.Minute; Secs = DateTime.Now.Second; //Calculating first digits of each time HoursFirstDigit = (int)(Hrs.ToString()[0]) - 48; MinutesFirstDigit = (int)(Mins.ToString()[0]) - 48; SecondsFirstDigit = (int)(Secs.ToString()[0]) - 48; // checking if hrs and minutes and secs are larger than 10 // because if it is a single Digit Time , the (Hrs.ToString()[1]) fails to read the second array element // causes a null exception if (Hrs >= 10) { HoursSecondDigit = (int)(Hrs.ToString()[1]) - 48; MapNumber(HoursSecondDigit, Hours2); MapNumber(HoursFirstDigit, Hours1); } else { HoursSecondDigit = HoursFirstDigit; MapNumber(HoursSecondDigit, Hours2); MapNumber(0, Hours1); } if (Mins >= 10) { MinutesSecodDigit = (int)(Mins.ToString()[1]) - 48; MapNumber(MinutesSecodDigit, Mins2); MapNumber(MinutesFirstDigit, Mins1); } else { MinutesSecodDigit = MinutesFirstDigit; MapNumber(MinutesSecodDigit, Mins2); MapNumber(0, Mins1); } if (Secs >= 10) { SecondsSecondDigit = (int)(Secs.ToString()[1]) - 48; MapNumber(SecondsSecondDigit, Secs2); MapNumber(SecondsFirstDigit, Secs1); } else { SecondsSecondDigit = SecondsFirstDigit; MapNumber(MinutesSecodDigit, Secs2); MapNumber(0, Secs1); } Debug.WriteLine("TIME" + Hrs + ":" + Mins + ":" + Secs); }