Как получить метку времени UTC из начальной загрузки? - PullRequest
0 голосов
/ 30 ноября 2018

Как я могу заставить bootstrap-datepicker возвращать метки времени UTC, а не метки времени, основанные на часовом поясе пользователя?

Я использую версию 1.8.0 bootstrap-datepicker

Вот пример, который отображает метку времени, возвращаемую bootstrap-datepicker при выборе даты:

HTML

<div class="container">
  <div class="row">
    <div class="col-sm-6">
      <div class="input-group date">
        <input type="text" class="form-control" id="js-date">
        <div class="input-group-addon">
          <span class="glyphicon glyphicon-th"></span>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <span id="timestamp-output"></span>
  </div>
</div>

JavaScript

$(document).ready(function() {
  $('#js-date').datepicker();
});

$('#js-date').datepicker().on('changeDate', function (ev) {
  $('#timestamp-output').text(ev.date.getTime());
});

Пример Fiddle

Пример начального загрузчика

Выход

Когда вы запустите пример и выберете дату 29.11.2008, отображается метка времени 1543478400000, что соответствует:

GMT: четверг, 29 ноября 2018 года, 8:00:00 AM

Мне нужно, чтобы он вместо этого возвратил отметку времени 1543449600000, которая соответствует:

GMT: четверг, 29 ноября 2018 года, 12:00:00 AM

Сводка

Есть ли опция загрузки в bootstrap-datepicker для этого?Или, может быть, какой-нибудь надежный способ преобразовать возвращенную локализованную метку времени в метку времени UTC?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы можете посмотреть на Moment.js . Обновлено Я конвертирую локальную метку времени в UTC.

$(document).ready(function() {
  $('#js-date').datepicker();
});

$('#js-date').datepicker().on('changeDate', function (ev) {
  
  var datetime = new Date(ev.date.getTime());
  // Convert local timestamp to UTC timestamp
  var local = moment(datetime).valueOf();
  var utc = (moment(datetime).add(-(moment().utcOffset()), 'm'));
  utc = moment.parseZone(utc).utc().valueOf();
  
  $('#timestamp-local').text('Local Timestamp is ' + local);
  $('#timestamp-utc').text('UTC Timestamp is ' + utc);
  
  console.log('UTC Offset is ' + moment().utcOffset());
});
<script src="https://rawgit.com/moment/moment/2.22.2/min/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.js"></script>

<div class="container">
  <div class="row">
    <div class="col-sm-6">
      <div class="input-group date">
        <input type="text" class="form-control" id="js-date">
        <div class="input-group-addon">
          <span class="glyphicon glyphicon-th"></span>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <span id="timestamp-local"></span><br/>
    <span id="timestamp-utc"></span>
  </div>
</div>
0 голосов
/ 30 ноября 2018

За этот вызов документации:

getUTCDate ()

Также через Javascript:

var date= новая дата (ev.date.getTime () + (60000 * date.getTimezoneOffset ()));

...