如何从一个时间戳过滤小时数并将这些小时数放入Javascript中的另一个时间戳?

时间:2013-03-29 15:46:30

标签: javascript timestamp unix-timestamp

我有一个时间戳,例如t1 = 1364571300 29/3/2013 16:35:00(在我当地的时区(CET))。

t1 ,我只想得到16:35:00

的小时数

然后我有另一个时间戳:例如,t2 = 1364598000 30/3/2013 0:00:00(在我当地的时区(CET))。

现在,我想用 t1 替换 t2 的小时数(16:35:00),以便最终结果会给我一个新的时间戳{ {1}} t3(在我当地的时区(CET))。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

var t1 = new Date(1364571300 * 1000);
var t2 = new Date(1364598000 * 1000);
var t3 = new Date(t2.getFullYear(), t2.getMonth(),   t2.getDate(),
                  t1.getHours(),    t1.getMinutes(), t1.getSeconds(), t1.getMilliseconds());

使用Date(Number) constructor创建两个日期(请注意它接受毫秒而不是秒),然后使用Date(year, month, day, hour, minute, second, millisecond) constructor来构建所需日期的两个部分的日期。< / p>

Live Example |对于使用该示例的任何人Source [注意:请记住,时间是本地,因此Yasin的16:35对您来说可能是完全不同的时间(或者甚至是另一个日期,就她而言t2 - 对我来说,那是3月29日23:00,而不是3月30日00:00,因为我在格林尼治标准时间,她在GMT + 0100)。 ]

在评论中的某个地方回答你的另一个问题,如果你想从t3获得Unix时间戳值(自大纪元以来的秒数),你可以这样做:

var timestamp = t3.getTime() / 1000; // Converts milliseconds to seconds

答案 1 :(得分:2)

试试这个 -

var t1 = new Date(1364571300 * 1000);
var t2 = new Date(1364598000 * 1000);
var time = t1.getHours() + ':' + t1.getMinutes() + ':' + t1.getSeconds();
var newdate = (t2.getMonth()+1).toString() + '/' + t2.getDate().toString() + '/' + t2.getYear().toString();
var t3 = new Date(newdate+' '+time);

使用t3。它存储了所需的日期。

答案 2 :(得分:0)

我的时间是GMT + 0530。

function getUtcDate( t ) {

    var d    = new Date( t  * 1000 )
    var ut  = (+d) + ( d.getTimezoneOffset() * 60 * 1000 ) + ( 60*60* 1000 ) ;
    return new Date( ut );

};

function getDiff( d ) {

   return +d - +new Date( d.getYear(), d.getMonth(), d.getDay() );    

}

var d1    = getUtcDate( 1364571300 );
var d2    = getUtcDate( 1364598000 );

var diff1 = getDiff( d1 );
var diff2 = getDiff( d2 );

var t3 =  (+d2 - diff2) + diff1 ;

console.log( new Date( t3 ) ) ;

打印

Date {Sat Mar 30 2013 16:35:00 GMT+0530 (India Standard Time)}