我有一个时间戳,例如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))。
我该怎么做?
答案 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)}