2016-01-07 46 views
0

我有一張Excel表單,我試圖轉錄爲VB表單,以便從輸入的數字中獲取設備的運行時間。VB將總天數轉換爲datetime

假設的計算結果,例如:4.391286731那就是總天。

在Excel中,我申請:

=INT(col+row) &" Days " & HOUR(col+row) & " h " & MINUTE(col+row) & " m " & SECOND(col+row) & " s". 

回報是4天9H23米27S完美。

現在在VB中,在得到最終計算後,例如:同樣的4.391286731如何將這個總數轉換爲類似於上述Excel的日期/時間格式?

+0

可能出現[獲取年,月,日曆時間(DateTime)]的副本(http://stackoverflow.com/questions/27902973/get-years-months-days-for-an-elapsed-時間跨度的日期時間) – Plutonix

+0

假設通過「VB」你真的指的是VB.NET(按照標籤)而不是excel-vba/vba/vbscript或其他一些變體 – Plutonix

+1

只是一個簡單的你可以在Excel中使用它取而代之的是'= TEXT(A1,「d」「Days」「h」「h」「m」「m」「s」「s」「」)' –

回答

2

你正在尋找的數據類型是TimeSpan

轉換Decimal天到TimeSpan

Dim t As TimeSpan = TimeSpan.FromDays(4.391286731) 

TimeSpan從天,分鐘,ETC:

dim t as new TimeSpan([Days], Hours, Minutes, Seconds) 

編輯: Timespan.ToString()會給你一個字符串表示,但不是在你的要求格式。

string.format("{0:%d} Days {0:%h}h, {0:%m}m, {0:%s}s", timespan.fromdays(4.391286731)) 

返回: 「4天9H,23M,27S」

MSDN Custom TimeSpan Format Strings

0

使用format命令。

ActiveCell4.391286731立即窗口。

?format(int(activecell.Value2), "0 \d\a\y\s ")&format(activecell.Value2, "h\h m\m s\s") 
4 days 9h 23m 27s 

不能混合和匹配^h小號但你肯定可以連接兩個格式化字符串一起格式掩碼。