我想将分钟转换为秒,此时我有一个问题,因为在分钟文本框中,当我键入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");
}发布于 2016-12-03 21:40:27
要从秒转换为分钟,只需将其除以60.0 (您需要十进制,否则它将被视为整数)。如果处理为整数,并且超过30秒,则30/60将等于0。
也可以使用double.TryParse方法。现在,如果有人输入1.50xx,您的应用程序就会崩溃。要么使用double.TryParse方法,要么使用尝试捕获机制,要么只允许数字条目。
编辑
这会实现你想要的。我添加了一个标签来显示输出,但是您可以删除它。
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秒)。因此,我们只需要将小数之前的部分转换为秒,并将小数之后的部分添加到其中。
发布于 2016-12-03 21:40:44
您可能正在寻找类似于TimeSpan.Parse方法的内容:
var ts = TimeSpan.Parse("00:01:30");这将产生90秒的TimeSpan。
还有一个ParseExact方法,它允许您指定一个格式字符串,因此不必每次指定时间,甚至可以指定一个点作为分隔符:
var ts = TimeSpan.ParseExact("01.30", @"mm\.ss", System.Globalization.CultureInfo.InvariantCulture);有关格式字符串,请参见自定义日期和时间格式字符串。
还要注意,您需要转义每个要按字面解释的字符(因此,在\之前是.)。
为您的案例的完整代码
var ts = TimeSpan.ParseExact(minTosecTextBox.Text, @"mm\.ss", System.Globalization.CultureInfo.InvariantCulture);
resultSectextBoxtextBox.Text = ts.TotalSeconds.ToString();发布于 2016-12-03 21:35:44
您需要以不同的方式处理文本的转换。您正在将"1.50“直接转换为双倍,即1.5和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来验证秒数。解析可以抛出异常。
https://stackoverflow.com/questions/40952730
复制相似问题