我一直在做一个页面和我目前的要求之一,它是在服务器的时间运行而不是客户端使用的本地时间。日期对象,我的第一种方法是每秒从服务器请求时间,但这实在是效率低下,所以我想知道,有没有办法,在从服务器请求Date对象一次后,每秒更新相同的Date对象继续从服务器获得的那个?
答案 0 :(得分:0)
解决方案是:(这是angularjs的一个实现) 事物是一个Date对象有一个名为getTime()的函数,它返回自1970年以来经过的毫秒数,所以你可以只使用那个数字并继续每秒增加1000毫秒,这样你就不必依赖多个请求,也不需要当地时间
$scope.current_TimeStamp = 0;
$scope.clock= function(){
setTimeout($scope.clock, 1000);
$scope.current_TimeStamp+=1000;
var today = new Date($scope.current_TimeStamp)
var days = [ 'Domingo','Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
var months = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
var date = days[today.getDay()] +" " + today.getDate()+ " de " + months[today.getMonth()] + " "+ today.toLocaleTimeString() ;
if(document.getElementById('time') !== null)
document.getElementById('time').innerHTML = date;
}
$scope.startTime= function(){
// make the request to get the date from the server
// in my case I store it in $scope.current_TimeStamp
RoomService.RequestTime().then(function(response){
var date = new Date(response.data)
$scope.current_TimeStamp = date.getTime()
var t = setTimeout($scope.clock, 1000);
})
}
$scope.startTime();