我相信与此相关,但我确实走得太远了,我看不到我目前错在哪里,我想从显示在8:30的文本框中获取float值是8.5。
对于8:30,我总是得到8.3的值。 这是我当前的代码,请纠正我错的地方。
var value = _event.EventText; // 08:18:00\ntekst!"
timeSpan = TimeSpan.Parse(split[0]);
textBoxSaldo.Text = timeSpan.ToString("hh':'mm");
CultureInfo ci = (CultureInfo)CultureInfo.CurrentCulture.Clone();
ci.NumberFormat.CurrencyDecimalSeparator = ":";
float saldo = float.Parse(textBoxSaldo.Text, NumberStyles.Any, ci);
感谢大家的帮助
答案 0 :(得分:2)
您可以这样做:
double saldo = TimeSpan.Parse(textBoxSaldo.Text).TotalHours;
编辑
或者进行有效性检查,例如Zohar Peled's answer
答案 1 :(得分:1)
如果08:30
代表一天中的某个时间值,则最简单的转换为代表小时数的浮点数将使用TimeSpan
:
if(TimeSpan.TryParse(textBoxSaldo.Text, out TimeSpan ts))
{
var saldo = ts.TotalHours;
}
else
{
// show an error message to the client.
}
答案 2 :(得分:1)
这是您要寻找的吗?
public static void Main()
{
string input = "8:30";
float output = ParseTimeAsDecimal(input);
Console.WriteLine(output);
}
public static float ParseTimeAsDecimal(string time)
{
DateTime d = DateTime.ParseExact(time, "H:mm", CultureInfo.InvariantCulture);
int hours = d.Hour;
int minutes = d.Minute;
float minutesFraction = minutes / 60f;
return ((float)hours) + minutesFraction;
}
输入:8:30
输出:8.5
答案 3 :(得分:0)
以下方法可能并不理想,但您可以尝试:
string.split(':')
分割字符串