2017-12-20 14 views
0

간단한 시계 응용 프로그램에 몇 가지 문제가있어 작성하려고합니다. 인내심이 극대화되어 UWP와 C#에 익숙하지 않습니다. 소스를 가져 왔어 https://github.com/kd4gar/Windows-Core-IOT-ClockTimePicker UWP Basics

내가 뭘 하려는지는 설정 시간에 따라 야간에 시계 글꼴/밝기 자동 변조를 사용하는 것입니다.

: 그래서 내가 몇 가지 다른 설정을 가지고있는 Settings.XAML에서 (24 시간 시계 등) 및 설정 페이지의 작품을 TimePicker

를 사용하고, 나는이 두 항목이

내 .xaml.cs에는이 코드가 있습니다. 설정에 저장하려고하거나 오전 7:00 및 17:00에 기본값을 설정하려고합니다.

public DateTime DimDisplayStartTimeSetting 
    { 
     get 
     { 

      if (localSettings.Values["DimDisplayStartTimeSettingValue"] == null) 
      { 
       localSettings.Values["DimDisplayStartTimeSettingValue"] = "7:00"; 
      } 
      /// return (localSettings.Values["DimDisplayStartTimeSettingValue"]); 
      return (localSettings.Values["DimDisplayStartTimeSettingValue"]); 

      localSettings.Values["DimDisplayStartTimeSettingValue"] = "7:00"; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStartTimeSettingValue"] = value; 
     } 
    } 

    public DateTime DimDisplayStopTimeSetting 
    { 
     get 
     { 

      if (localSettings.Values["DimDisplayStopTimeSettingValue"] == null) 
      { 
       localSettings.Values["DimDisplayStopTimeSettingValue"] = "17:00"; 
      } 
      /// return TimeSpan.Parse(localSettings.Values["DimDisplayStopTimeSettingValue"].ToString()); 

     } 

     set 
     { 
      localSettings.Values["DimDisplayStopTimeSettingValue"] = value; 
     } 
    } 

DateTime 대 TimeSpan을 사용하여 뭔가 잘못하고있는 것처럼 보입니다. 누군가가 나를 더 잘 이해하도록 도울 수 있습니까? TimePicker의 문서를 읽었으며 TimeSpan을 원한다는 것을 이해한다고 생각하지만 내 Settings.xaml.cs에서 올바르게 설정하는 방법을 모르겠습니다. 감사!

답변

0

DateTime은 정확한 날짜 및 시간 (예 : 2017-10-12 17:00)을 저장하는 반면 TimeSpan은 시간 길이 (예 : 2 시간 1 분 5 초 또는 3 일)를 저장합니다. . 당신은 설정에서 특정 날짜, (사건을 것 같다) 하루의 시간을 저장할 필요가없는 경우

, 다음 TimeSpan로 이동합니다

public TimeSpan DimDisplayStartTimeSetting 
    { 
     get 
     { 

      if (!localSettings.Values.ContainsKey("DimDisplayStartTimeSettingValue")) 
       localSettings.Values["DimDisplayStartTimeSettingValue"] = TimeSpan.FromHours(7); 

      return (TimeSpan) localSettings.Values["DimDisplayStartTimeSettingValue"]; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStartTimeSettingValue"] = value; 
     } 
    } 

    public TimeSpan DimDisplayStopTimeSetting 
    { 
     get 
     { 

      if (!localSettings.Values.ContainsKey("DimDisplayStopTimeSettingValue")) 
       localSettings.Values["DimDisplayStopTimeSettingValue"] = new TimeSpan(17, 0, 0); 

      return (TimeSpan) localSettings.Values["DimDisplayStopTimeSettingValue"]; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStopTimeSettingValue"] = value; 
     } 
    } 
다음

TimeSpan.FromHours(7);new TimeSpan(17, 0, 0); 할 동일한 작업 - 새로운 TimeSpan 개체를 만들지 만 상황에 더 적합한 구문을 선택할 수 있습니다.

지역 설정 컨테이너는 TimeSpan 객체를 포함 할 수 있지만, object 모든 항목을 반환, 그래서 우리는 수동이 줄처럼 TimeSpan 형식으로 반환 값을 캐스팅해야한다 :

return (TimeSpan) localSettings.Values["DimDisplayStopTimeSettingValue"]; 

지역 설정 컨테이너 아무튼 그래도 DateTime 개체를 지원하지만 TimeSpan 대신 해당 개체를 저장해야한다고 결정하면 항상 컨테이너에서 지원하는 DateTimeOffset 유형으로 변환 할 수 있습니다.

날짜와 시간 유형의 차이점에 대한 자세한 내용은 here을 참조하십시오.