我有一個小數。這個小數的範圍在0到23.999999之間。這個小數代表一個時間。例如,如果小數點是0.25,那麼它表示的時間是12:15 AM。如果小數點是23.50,它表示的時間是晚上11點30分。將十進制表示時間轉換爲小時,分鐘,秒
我有三個變量: - 小時 - 分鐘 - 秒
利用這個小數,我該如何填寫Hours
,Minutes
,並且Seconds
值?
我有一個小數。這個小數的範圍在0到23.999999之間。這個小數代表一個時間。例如,如果小數點是0.25,那麼它表示的時間是12:15 AM。如果小數點是23.50,它表示的時間是晚上11點30分。將十進制表示時間轉換爲小時,分鐘,秒
我有三個變量: - 小時 - 分鐘 - 秒
利用這個小數,我該如何填寫Hours
,Minutes
,並且Seconds
值?
嗯,這裏是在C#的答案,但它通常是在大多數語言相同的想法:
int hours = (int)hoursDecimal;
decimal minutesDecimal = ((hoursDecimal - hours) * 60);
int minutes = (int)minutesDecimal;
int seconds = (int)((minutesDecimal - minutes) * 60);
int seconds =(minutesAsADecimal - minutesAsAnInt)* 60? – DotNetDateQuestion 2011-04-18 03:37:53
我看到一個問號,但我不明白這個問題... – Domenic 2011-04-18 06:15:53
不會將轉換爲小數部分的int整數,如果其餘部分> .5 – DavidB 2013-06-21 07:40:26
時間應該很簡單。
1小時內有60分鐘,所以得到小數部分,乘以60,取整數。再次取小數點,再乘以60,然後你有秒。
例如,讓我們數20.38490
我們知道這是每小時20或8 PM。
這給我們留下了數.38490
與60相乘,我們得到23.094分鐘。
將.094
乘以60,我們得到5秒。
比以上更有幫助! – nfell2009 2015-12-18 00:27:56
無論您使用的語言,您可以用數學函數做到這一點:MOD和FLOOR/TRUNC
令「DEC」是小數變量
trunc(mod(dec, 1)) => hours
trunc(mod(dec * 60, 60)) => minutes
trunc(mod(dec * 3600, 60)) => seconds
在C#中,你可以截斷小數只用顯式轉換,如爲int
int seconds = (int) ((dec * 3600) % 60)
您可以使用發言功能去除小時數並將minuites和秒保留爲小時的一小部分。然後,您可以再次使用地板功能在一小時內剝離minuites。你然後用秒時(作爲一個小時的分數)
一個簡單的例子,下面的打印小時,分鐘日出分數小時從午夜開始
printf("sunrise %ld:%ld, \n",
(long)floor(sunrise),
(long)(floor(sunrise * 60) - 60 * floor(sunrise)));
什麼語言? – Marlon 2011-04-18 02:34:08
從用戶名判斷,可能是一種.NET語言:P – Domenic 2011-04-18 02:35:55