在Javascript中更新Date对象

时间:2016-12-01 17:44:42

标签: javascript date

我一直在做一个页面和我目前的要求之一,它是在服务器的时间运行而不是客户端使用的本地时间。日期对象,我的第一种方法是每秒从服务器请求时间,但这实在是效率低下,所以我想知道,有没有办法,在从服务器请求Date对象一次后,每秒更新相同的Date对象继续从服务器获得的那个?

1 个答案:

答案 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();