DateTimeModel.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.ComponentModel;
  3. using System.Windows.Threading;
  4. namespace SWRIS.Models
  5. {
  6. public class DateTimeModel : INotifyPropertyChanged
  7. {
  8. private readonly DispatcherTimer _timer;
  9. private DateTime systemTime;
  10. private string date = DateTime.Now.ToString("yyyy-MM-dd");
  11. private string time = DateTime.Now.ToString("HH:mm");
  12. public DateTimeModel()
  13. {
  14. _timer = new DispatcherTimer
  15. {
  16. Interval = TimeSpan.FromSeconds(1) // 1秒更新一次保持精准
  17. };
  18. _timer.Tick += Timer_Tick;
  19. // 启动定时器
  20. _timer.Start();
  21. }
  22. private void Timer_Tick(object sender, EventArgs e)
  23. {
  24. systemTime = DateTime.Now;
  25. if (Time != systemTime.ToString("HH:mm"))
  26. {
  27. Time = systemTime.ToString("HH:mm");
  28. if (Date != systemTime.ToString("yyyy-MM-dd"))
  29. {
  30. Date = systemTime.ToString("yyyy-MM-dd");
  31. }
  32. }
  33. }
  34. public string Date { get => date; set { date = value; OnPropertyChanged("Date"); } }
  35. public string Time { get => time; set { time = value; OnPropertyChanged("Time"); } }
  36. public event PropertyChangedEventHandler PropertyChanged;
  37. protected internal virtual void OnPropertyChanged(string propertyName)
  38. {
  39. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  40. }
  41. }
  42. }