2011-08-09 68 views
0

我不是那種擅長的JavaScript(還),所以我需要一些幫助,這個PHP腳本的替代版本(在JavaScript)如何將php時間函數轉換爲javascript函數?

function until($format = ""){ 
    $now = strtotime("now"); 
    $nextTuesday = strtotime("-1 hour next tuesday"); 
    $until = $nextTuesday - $now; 
    if(empty($format)){ 
     return $until; 
    }else{ 
     return date("$format",$until); 
    } 
} 

只需要它來倒計時,直到下週二,在一個非常短的方式(不像20 +線,像所有其他腳本,我見過) 它應該仍然會返回一個時間戳,如果可能的話(需要一個離線應用程序)

所以,如果任何人都可以幫助我會很開心(不是說我現在不開心,但我會更開心):D

+0

JavaScript有一些類似日期的功能,但是, 「-1小時下週二」可能無法實現。 來源:http://www.w3schools.com/jsref/jsref_obj_date.asp – dave

+1

查看結果[datejs](http://www.datejs.com/) –

+2

在今天和下個星期二之間取得JavaScript的差異是微不足道的。但是,您還需要少於20行代碼的日期格式解析引擎。日期格式不內置於JavaScript中。您可以手動格式化一行代碼中的日期,但無法合理分析格式字符串,並在20行代碼中返回格式化的日期字符串。使用現有的庫或編寫自己的日期格式引擎。 – gilly3

回答

0

JS沒有任何東西都很接近時間。你必須自己決定「下個週二」。一旦你得到了,你可以使用.getTime()提取一個時間戳值,這將是自1970年1月1日以來的毫秒數。這個值也可以作爲參數反饋給一個新的日期對象,所以你可以使用外部的簡單數字進行日期數學計算,然後再次使用結果創建一個新的日期對象。

例如

var now = new Date(); 
var ts = now.getTime(); 
var next_week = ts + (86400 * 7 * 1000); 
next_week_object = new Date(next_week); 

一旦你拿到「下週二」代碼想通了,剩下的就是平凡

0

要獲得毫秒,直到下週二(最近的未來):

function f_until(){ 
    var now = new Date(Date.now()); 
    var nextT = new Date(Date.now()); 
    var cD = nextT.getDay(); 
    if(cD < 2)nextT.setDate(nextT.getDate() + (2-cD)); 
    else nextT.setDate(nextT.getDate() + (9-cD)); 
    nextT.setHours(nextT.getHours() - 1); 
    //alert('next tuesday: '+nextT.toString()); 
    return nextT.getTime() - now.getTime(); 
}