2012-06-08 46 views
1

我試圖獲取當前時間流逝的百分比的今天時間。它可以是JavaScript或PHP。我怎樣才能做到這一點 ?如何獲取當前時間流逝的百分比?

+3

[你有什麼試過?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – j08691

+0

$ midnight = strtotime('00:00'); $ epochseconds = gettimeofday(true); $ timeofdayseconds = $ epochseconds - $ midnight; $ timepercent = $ timeofdayseconds /(60 * 60 * 24)* 100; – user198989

+0

有時,我認爲'mattgemmell'有代理爲他工作誰問問題,重定向用戶到他的網站:) – Jashwant

回答

4

使用一個Date對象和一些算術。將當天的組成部分轉換成等效單位(如秒),找到它們的總和,然後除以該單位每天的數量。

例如,以下是JavaScript中的解決方案。

var d = new Date(); 
var pctDayElapsed = (d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds() + d.getMilliseconds()/1000)/86400; 

請注意,這種方法搭載瀏覽器的本地化。你的結果將取決於瀏覽器的時區。

+0

我無法正常工作。它是否必須在服務器上運行? – user198989

+0

對不起,我在代碼的毫秒部分有一個錯字。現在,將代碼複製並粘貼到瀏覽器控制檯中應該沒有問題。 – cheeken

+0

是的,現在它可以工作。但有一個問題,目前這裏的時間是凌晨1點,但代碼給我的比例是「0.04291961805555556」? – user198989

1

將當前時間除以86400,然後將該整數值乘以86400,回到當天的開始時間。然後取當前時間的差值(以秒爲單位),然後除以86400。最後,乘以100

編輯:MOD作品更有效地

僞代碼:

MidnightDays = (TimeInSeconds % 86400) * 86400; 
Percentage = (TimeInSeconds - MidnightDays)/86400 * 100; 
+1

...或者你可以使用一個模,而不是一個div,然後乘法,然後減去。 –

3

我會使用當前時間來計算的,今天已經過去的秒數,然後除以86400(一天中的秒數),當然還要乘以100來從小數到百分數。

3

這裏是PHP的答案:

$now=time(); 
$today=strtotime(date("m/d/Y")); 
$seconds=$now-$today; 
$day=24*60*60;//seconds in a day; 
$percent=$seconds/$day*100; 

OR

$hours=date('G')*60*60; 
$minutes=date('i')*60; 
$seconds=date('s'); 
$day=24*60*60;//seconds in a day; 
$percent=($hours+$minutes+$seconds)/$day*100 
3
<?php 
$timestamp = time(); 
$hours = intval(date("G", $timestamp)); 
$minutes = intval(date("i", $timestamp)); 
$seconds = intval(date("s", $timestamp)); 
$proportion_elapsed = ($hours * 60 * 60 + $minutes * 60 + $seconds)/
    (24 * 60 * 60); 
printf("%0.4F of the day has elapsed.", $proportion_elapsed); 
?> 

這工作只要有86,400秒了一天,這可能不是由於日光是真實的節省時間或閏秒。