Dreamine.UI.Wpf 1.0.1
Dreamine.UI.Wpf 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
TimeSpanHmEditConverter.cs
이 파일의 문서화 페이지로 가기
1using System;
2using System.Globalization;
3using System.Windows.Data;
4
6{
23 public sealed class TimeSpanHmEditConverter : IValueConverter
24 {
73 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
74 {
75 if (value is TimeSpan ts)
76 return $"{(int)ts.TotalHours}:{ts.Minutes:00}";
77 return "0:00";
78 }
79
136 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
137 {
138 if (value is not string s || string.IsNullOrWhiteSpace(s))
139 return TimeSpan.Zero;
140
141 s = s.Trim();
142
143 // 1) "H:MM" 정식 표기
144 if (s.Contains(':'))
145 {
146 var parts = s.Split(':');
147 if (parts.Length == 2 &&
148 int.TryParse(parts[0], out var h) &&
149 int.TryParse(parts[1], out var m) &&
150 m >= 0 && m < 60)
151 return TimeSpan.FromHours(Math.Max(0, h)) + TimeSpan.FromMinutes(m);
152 return TimeSpan.Zero;
153 }
154
155 // 2) 순수 숫자: H, HMM, HHMM 해석
156 if (int.TryParse(s, out var num))
157 {
158 if (num < 0) num = 0;
159
160 if (s.Length <= 2) // "H" 또는 "HH" → 시간만
161 {
162 return TimeSpan.FromHours(num);
163 }
164 else
165 {
166 // 마지막 두 자리는 분으로 간주
167 var minutes = num % 100;
168 var hours = num / 100;
169 if (minutes >= 60) minutes = minutes % 60; // 비정상 값 보정
170 return TimeSpan.FromHours(hours) + TimeSpan.FromMinutes(minutes);
171 }
172 }
173
174 return TimeSpan.Zero;
175 }
176 }
177}
object Convert(object value, Type targetType, object parameter, CultureInfo culture)
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)