【发布时间】:2012-09-24 19:27:16
【问题描述】:
这是我的输入:
55
这是我想要的输出:
PT55H
C# 中是否有一个内置类可以将时间跨度转换为:TimeSpan.TryParse(55) 或带有小时的字符串“55”转换为 ISO8601 格式的字符串?
【问题讨论】:
这是我的输入:
55
这是我想要的输出:
PT55H
C# 中是否有一个内置类可以将时间跨度转换为:TimeSpan.TryParse(55) 或带有小时的字符串“55”转换为 ISO8601 格式的字符串?
【问题讨论】:
您可以使用静态TimeSpan.FromHours 方法将数字转换为TimeSpan。例如var ts = TimeSpan.FromHours(55.0);。
如果你总是希望时间只用小时表示,在 ISO 系统中,也许你可以简单地说var isostring = String.Format("PT{0}H", ts.TotalHours);。
【讨论】:
PT55H(55 小时)而不是P2DT7H(2 天零 7 小时)。
TimeSpan ts(不应为负数),我的String.Format("PT{0}H", ts.TotalHours) 给出一个PT,后跟几个小时(可能带有小数),然后是一个H。您可以指定小数位数,或小数分隔符(如果需要)。
同事刚刚为我找到了这个:
TimeSpan start = new TimeSpan(int.Parse(txtStartHours.Text), 0, 0);
durationNode.Element("StartTime").Value = XmlConvert.ToString(start);
好像是转换成PT2D7H,不过我在别处用的是XMLConvert.ToTimeSpan().TotalHours,应该不会有什么问题吧!
【讨论】: