2011-08-09 66 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(); 
}