Angular: DateTime and TimeZone

Mostra o comportamento de data, conversão de strings e timezone no Angular e Javascript

by Mateus Correia

HTML

<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MyCtrl">
  <h1>
    TimeZone do seu navegador : {{timezone}}
    </h1>
  <H1>Com timezone - UTC</H1>
  <div>
    Date Time Raw: {{date20170901UTC}}.
  </div>
  <div>
    Date Time Local: {{date20170901UTC | date:'dd/MM/yyyy HH:mm:ss'}}.
  </div>
  <H1>Sem timezone</H1>
  <div>
    Date Time Raw: {{date20170901}}.
  </div>
  <div>
    Date Time Local: {{date20170901 | date:'dd/MM/yyyy HH:mm:ss'}}.
  </div>
</div>

JavaScript

var myApp = angular.module('myApp', []);

function MyCtrl($scope, $timeout) {
  $scope.date20170901UTC = new Date('2017-09-01T00:00:00Z');
  //Safari não converte data canonica yyyy-MM-dd
  //https://stackoverflow.com/a/5646753/3424212
  $scope.date20170901 = new Date('2017-09-01'.replace(/-/g, "/"));
  //https://stackoverflow.com/a/1091399/3424212
  $scope.offset = new Date().getTimezoneOffset();
  $scope.timezone = $scope.offset * -1 / 60;
}