Javascript Unix时间戳转换

时间:2015-04-03 15:48:54

标签: javascript

我有一个我正在使用的插件,它需要将选择的日期作为unix时间戳传递,因为它允许您向下钻取。

我遇到的问题是它创建的UNIX时间戳也被限制在一定的时间段内,所以当我运行我的查询时,它只能在指定的时间之间得到我的东西。 (我明白时间戳是什么)。

我按如下方式生成时间戳:

function myDate(input) {
 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
 input = input.split('-');
 input[1] = months.indexOf(input[1]);
 return new Date(+input[2], +input[1], +input[0])
}     

var startDate = myDate('01-Apr-2015')
startDate = startDate.getTime() / 1000.0;

alert(startDate)

在这里小提琴:http://jsfiddle.net/rnho8k3s/

我的目标/最终结果是让时间跨度为14280192001428105599000,即2015年4月3日00:00:00 - 2015年4月3日23:59:59 < / p>

如何实现这一目标,而不是从当前时间点创建时间戳?

2 个答案:

答案 0 :(得分:0)

我为PHP构建了这样的东西,我称之为“DateFrame”。

基本上,您必须捕获所需的日期,追加开始(00:00:00)和结束(23:59:59)时间戳,并使用Javascripts Date类生成时间戳。

也许它可以提供帮助。

https://github.com/dmgig/DateFrame

public function __construct($start, $end, $field = null){
    $this->start = date('Y-m-d', strtotime($start)) . ' 00:00:00';
    $this->end   = date('Y-m-d', strtotime($end))   . ' 23:59:59';

    $startdiff   = new DateTime($this->start);
    $enddiff     = new DateTime($this->end);
    $this->diff  = $enddiff->diff($startdiff)->format('%a');

}

答案 1 :(得分:0)

要获得一天开始和结束的两个UTC时刻,您可以使用以下内容。

//                   Yr   Nov  1st
var begin = Date.UTC(2012, 11, 0);
//                  ms    sec  min  hour
var end = begin + (1000 * 60 * 60 * 24) - 1;