我想将分钟转换为秒,此刻我遇到了问题,因为在分钟文本框中输入1.50时结果为90秒,这是错误的,因为1.30 = 90秒
private void MtoCbutton_Click(object sender, EventArgs e)
{
if (minTosecTextBox.Text != "Minutes")
{
minutes = Convert.ToDouble(minTosecTextBox.Text);
TimeSpan span = TimeSpan.FromMinutes(minutes);
resultSectextBoxtextBox.Text = span.TotalSeconds.ToString();
}
else
{
MessageBox.Show("Please enter Minutes");
}
答案 0 :(得分:7)
您可能正在寻找类似TimeSpan.Parse方法的内容:
var ts = TimeSpan.Parse("00:01:30");
这将产生90秒的TimeSpan。
还有一个ParseExact
方法,可让您指定格式字符串,因此您不必每次都指定小时数,甚至可以指定一个点作为分隔符:
var ts = TimeSpan.ParseExact("01.30", @"mm\.ss", System.Globalization.CultureInfo.InvariantCulture);
有关格式字符串,请参阅Custom Date and Time format strings。
另请注意,您需要转义要按字面解释的每个字符(因此\
之前的.
。
您案例的完整代码:
var ts = TimeSpan.ParseExact(minTosecTextBox.Text, @"mm\.ss", System.Globalization.CultureInfo.InvariantCulture);
resultSectextBoxtextBox.Text = ts.TotalSeconds.ToString();
答案 1 :(得分:2)
您需要以不同方式处理文本的转换。您将“1.50”直接转换为双倍,即1.5和1,而1/2分钟相当于90秒。如果要允许用户键入“1.50”并表示1分50秒,则需要拆分字符串。你可以这样做:
var split = text.Split('.');
int seconds = 0;
if (split.Length > 1)
{
seconds = int.Parse(split[1]);
}
seconds += TimeSpan.FromMinutes(split[0]).Seconds;
注意 - 如果您没有验证文本,那么最终可能会失败。您应该使用TryParse来验证秒数。 Parse可以抛出异常。
答案 2 :(得分:-2)
要从秒转换为分钟,您只需要除以60.0(您需要小数或它将被视为整数)。如果处理为整数并且你通过30秒,30/60将等于0.
也使用double.TryParse
方法。现在,如果有人输入1.50xx,您的应用程序将崩溃。使用double.TryParse
方法或使用try catch机制或仅允许数字输入。
修改强>
这将完成你想要的。我添加了一个标签来显示输出,但你可以删除它。
double enteredNumber;
if (double.TryParse(minTosecTextBox.Text, out enteredNumber))
{
// This line will get everything but the decimal so if entered 1.45, it will get 1
double minutes = Math.Floor(enteredNumber);
// This line will get the seconds portion from the entered number.
// If the number is 1.45, it will get .45 then multiply it by 100 to get 45 secs
var seconds = 100 * (enteredNumber - Math.Floor(enteredNumber));
// now we multiply minutes by 60 and add the seconds
var secondsTotal = (minutes * 60 + seconds);
this.labelSeconds.Text = secondsTotal.ToString();
}
else
{
MessageBox.Show("Please enter Minutes");
}
编辑2
进一步澄清
你没有将分钟转换为秒,因为如果你是1.5(1分半)将等于90秒。这是合乎逻辑且明显的。您只将小数点前的部分视为分钟,将小数点后的部分视为秒(1.30 = 1分30秒= 90秒)。 因此,我们只需要将小数点前的部分转换为秒,然后将小数点后的部分添加到它。