2012-10-22 61 views
1

打算將一個字符串值,爲雙轉換Textvalue字符串(秒)數值爲雙(二)... 其實我想秒轉換成使用TimeSpan 價值,我想轉換Mintues是具有780.0000000656558 780秒和其餘爲毫秒級的...我想顯示13.00000000010942633333或例如萬一13mintues如果沒有準確的認識使用時間跨度

正在嘗試使用下面的代碼

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) + "..."; 
     } 
    } 
} 

我想顯示輸出紀要...我該怎麼做 由於提前

+0

我不相信建立在日期/時間數據類型的.NET都以毫秒爲單位的那種精度足夠的分辨率。 – Oded

+0

這裏混合了很多*類型。例如:'int DownTimeSeconds = Convert.ToDecimal(DownTime.Text).ToString();'真的不清楚你的原始值是什麼意思代表......事實上,你有「.000」意味着它是0毫秒... –

+0

@JonSkeet:我想顯示它的價值進入mintes.seconds ..和以上的LOC,你提到的是從我的side.apologize錯誤...你糾正它在開發新手bcz。 。謝謝 –

回答

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(); 
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包含七位小數,但您的第一個非零小數位在位置八個

這可以通過使用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 
+0

雖然'TimeSpan'受限於100ns ticks,'FromSeconds'僅支持完整毫秒。 'FromSeconds(780.0004)== FromSeconds(780)' – CodesInChaos

+0

@CodesInChaos是true,但在這種情況下沒有區別,因爲分數在10ns範圍內,低於ticks的分辨率。 – Richard

+0

@理查德:謝謝 –