使用TimeSpan将Textvalue String(Seconds)值转换为Double(Second)

时间:2012-10-22 09:59:01

标签: c# asp.net

我要将字符串值转换为double ... 其实我想用TimeSpan将秒转换为Mintues 我要转换的值是780.0000000656558有780秒,剩下的是毫秒......我想显示13.00000000010942633333或者例如13分钟,以防没有准确的感知

我正在尝试使用以下代码

if (DownTime != null)
{
    DownTime.Text = sensor.DownTime;
    if (DownTime.Text.Length > 0)
    {
         //TimeSpan.FromSeconds(DownTime.Text).ToString()
         double DownTimeSeconds = Convert.ToDecimal(DownTime.Text).ToString();
         double DownTimeMints = DownTimeSeconds / 60;
         sensor.DownTime = Convert.ToString(DownTimeMints);
         DownTime.Text = sensor.DownTime;
         DownTime.ToolTip = DownTime.Text;
         if (DownTime.Text.Length >= 25)
         {
             DownTime.Text = DownTime.Text.Substring(0, 20) + "...";
         }
    }
}

我想在分钟内显示输出......我该怎么办? 在此先感谢

2 个答案:

答案 0 :(得分:2)

TimeSpan.FromSeconds需要double并包含小数部分(此处加0.1以使分数清晰):

使用PowerShell(自动执行stringdouble转换)

PS [64]> [TimeSpan]::FromSeconds("780.1000000656558")


Days              : 0
Hours             : 0
Minutes           : 13
Seconds           : 0
Milliseconds      : 100
Ticks             : 7801000000
TotalDays         : 0.00902893518518519
TotalHours        : 0.216694444444444
TotalMinutes      : 13.0016666666667
TotalSeconds      : 780.1
TotalMilliseconds : 780100

然而,正如评论者指出的那样,TimeSpan的分辨率有限:刻度或100ns间隔。您的小数部分小于该部分。因此,在关于Ticks的示例中包括七位小数,但您的第一个非零小数位位于 8

这可以通过使用TimeSpan.FromTicks,手动将字符串转换为long,同时(分钟,秒和毫秒)来看到,但第一个非零十进制数字仍然是丢失:

PS [64]> [TimeSpan]::FromTicks(7801000000)


Days              : 0
Hours             : 0
Minutes           : 13
Seconds           : 0
Milliseconds      : 100
Ticks             : 7801000000
TotalDays         : 0.00902893518518519
TotalHours        : 0.216694444444444
TotalMinutes      : 13.0016666666667
TotalSeconds      : 780.1
TotalMilliseconds : 780100

答案 1 :(得分:1)

这段代码给了我13分钟的时间:请尝试结束。:

        double time = 780.0000000656558;
        TimeSpan ts = TimeSpan.FromSeconds(time);
        Console.WriteLine(ts.Minutes);
        //Console.WriteLine(ts.TotalMinutes);  // this will give u mintes.fractionalpart
        Console.ReadLine();