0

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

t1开始,我只想得到几个小时16:35:00

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

现在,我想用t1 中的 ( )替换t2的小时数,以便最终结果会给我一个新的时间戳,它将是(在我的本地时区 (CET) 中)。16:35:00t330/3/2013 16:35:00

我怎么做?

4

3 回答 3

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)构造函数来创建您的两个日期(注意它接受毫秒而不是秒),然后Date(year, month, day, hour, minute, second, millisecond)构造函数从您想要的两天的部分中构建日期。

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

并在评论中的某处回答您的其他问题,如果您想从中获取 Unix 时间戳值(自大纪元以来的秒数)t3,您可以这样做:

var timestamp = t3.getTime() / 1000; // Converts milliseconds to seconds
于 2013-03-29T16:10:30.067 回答
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. 它存储所需的日期。

于 2013-03-29T16:04:14.673 回答
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)}
于 2013-03-29T18:38:40.620 回答