2

たとえば、27:30 (27 時間 30 分) を取り、それを 27.5 のような 10 進数に変換するコードがあります。私は反対の別の機能を持っています。

 public class Time
    {
        public static string Hours(decimal d)
        {
            return TimeSpan.FromHours((double)(d + 0.005M)).ToString("h\\:mm");
        }

        public static decimal Hours(string s)
        {
            decimal r;
            if (decimal.TryParse(s, out r))
                return r;

            return (decimal)TimeSpan.Parse(s).TotalHours + 0.005M;
        }
    }

問題は、10 進数から文字列への変換が 24 時間にラップするように見えることです。30.0 を指定すると 6:00 になりますが、これは間違っています。30:00のはずです

ラップを回避するにはどうすればよいですか?

ありがとう

4

3 に答える 3

0

分のみを取得するために使用DateTime.ToStringし、時間を自分で計算します。

return string.Format("{0:0}:{1}", Math.Truncate(d+0.005m), TimeSpan.FromHours(d+0.005m).ToString("mm"));
于 2013-04-01T20:21:44.143 に答える