using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; using static ICSharpCode.SharpZipLib.Zip.ZipEntryFactory; namespace CapMachine.Wpf.Converts { /// /// 秒到字符串类型的展示 /// public class SecToStrConvert : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return null; return SecToString((int)value); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return null; return StringToSec((string)value); } /// /// 秒时间到 00:00:00字符串 /// /// private string SecToString(int TotalSec) { //int hour = TotalSec / 3600; //int minute = (TotalSec - hour * 3600) / 60; //int second = TotalSec % 60; //return string.Format("{0}:{1}:{2}", hour, minute, second); //////Console.WriteLine(result); //TimeSpan TimeInfo = TimeSpan.FromSeconds(TotalSec); //return TimeInfo.ToString(); return ConvertSecToTimeStr(TotalSec); } private string ConvertSecToTimeStr(int totalSeconds) { int hours = totalSeconds / 3600; int remainingSeconds = totalSeconds % 3600; int minutes = remainingSeconds / 60; int seconds = remainingSeconds % 60; return $"{hours}:{minutes:D2}:{seconds:D2}"; } /// /// 00:00:00到秒时间 /// /// private int StringToSec(string timeString) { try { //TimeSpan TimeInfo = TimeSpan.Parse(timeString); //return (int)TimeInfo.TotalSeconds; return ConvertTimeStrToSecs(timeString); } catch (Exception ex) { MessageBox.Show("时间格式输入不正确"); return (int)0; } } public int ConvertTimeStrToSecs(string timeString) { string[] parts = timeString.Split(':'); if (parts.Length != 3) return 0; //throw new FormatException("Invalid time format. Use 'hh:mm:ss'"); if (!int.TryParse(parts[0], out int hours) || hours < 0) return 0; //throw new ArgumentException("小時必須為非負整數"); if (!int.TryParse(parts[1], out int minutes) || minutes < 0 || minutes >= 60) return 0; //throw new ArgumentException("分鐘必須為 0-59 的整數"); if (!int.TryParse(parts[2], out int seconds) || seconds < 0 || seconds >= 60) return 0; //throw new ArgumentException("秒必須為 0-59 的整數"); return hours * 3600 + minutes * 60 + seconds; } } }