2013-08-05 7 views
3

im using bootstrap-datetimepicker от http://tarruda.github.io/bootstrap-datetimepicker/ Это дает возможность выбрать дату и время по местному времени, что я не могу понять, так это как преобразовать его в UTC перед отправкой его в cgi , Мне нужно сделать это, потому что мой сервер установлен в часовой пояс GMT, и вход может поступать из любого часового пояса.
, поэтому я хотел бы, чтобы пользователь выбирал время в своем tz, но конвертировал этот выбор в gmt, который отправил его на мой скрипт cgi.
если есть какой-либо другой лучший способ решить эту проблему, я также был бы признателен.bootstrap-datetimepicker конвертировать выбранную локальную дату в UTC

<script type="text/javascript"> 
    $('#timetime').datetimepicker({ 
     maskInput: true, 
     format: 'yyyy-MM-dd hh:mm', 
    }); 
</script> 

она вызывается в том виде, в коде ниже

<label for="sdate" class="control-label">* Scheduled Date (UTC/GMT)</label> 
<div id="timetime" class="controls"> 
    <input id="sdate" name="sdate" type="text" placeholder="YYYY-MM-DD HH:MM"></input> 
    <span class="add-on"> 
     <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> 
    </span> 
</div> 

окончательный ответ, основанный на помощь дается Филмор

<script type="text/javascript"> 
      $('#timetime').datetimepicker({ 
          maskInput: true, 
          format: 'yyyy-MM-dd hh:mm', 
          }); 

$("form").submit(function(){ 
    // Let's find the input to check 
    var $input = $(this).find("input[name=sdate]"); 
    if ($input.val()) { 
    // Value is falsey (i.e. null), lets set a new one, i have inversed this, input should be truthy 
    //$input.val() = $input.val().toISOString(); 
    var d = $input.val(); 
    var iso = new Date(d).toISOString(); 
    // alert(iso); 
    $input.val(iso); 
    } 
}); 
      </script> 

дальнейшего обновления для работы как на Firefox и хром

<script type="text/javascript"> 
    $("form").submit(function(){ 
    // Let's find the input to check 
    var input = $(this).find("input[name=sdate]"); 
    if (input.val()) { 
      var picker = $('#timetime').data('datetimepicker'); 
    //  alert(input.val()); 
    //  alert(picker.getLocalDate().toISOString()); 
      input.val(picker.getLocalDate().toISOString()); 
      } 
    }); 
</script> 
+1

возможно дубликат (http://stackoverflow.com/questions/948532/how-do-you -convert-a-javascript-date-to-utc) – filmor

+0

спасибо за эту ссылку, есть только один м я не понимаю, где я могу конвертировать дату после того, как пользователь выбрал дату/время, чтобы он был отправлен в запрос на получение. –

+0

http://stackoverflow.com/questions/9943968/change-input-text-value-with-js-or-jquery-before-submit-if-value-is-null :) – filmor

ответ

2
<script type="text/javascript"> 
    $('#timetime').datetimepicker({ 
        maskInput: true, 
        format: 'yyyy-MM-dd hh:mm', 
    }); 

$("form").submit(function(){ 
    var input = $('#sdate').val(); 
    var input = convertToUtc(input); 
}); 


    function convertToUtc(str) { 
     var date = new Date(str); 
     var year = date.getUTCFullYear(); 
     var month = date.getUTCMonth()+1; 
     var dd = dategetUTCDate(); 
     var hh = date.getUTCHours(); 
     var mi = date.getUTCMinutes(); 
     var sec = date.getUTCSeconds(); 

     // 2010-11-12T13:14:15Z 

     theDate = year + "-" + (month [1] ? month : "0" + month [0]) + "-" + 
        (dd[1] ? dd : "0" + dd[0]); 
     theTime = (hh[1] ? hh : "0" + hh[0]) + ":" + (mi[1] ? mi : "0" + mi[0]); 
     return [ theDate, theTime ].join("T"); 
    } 

</script> 
+0

отлично работает для меня спасибо neha !!! – Jimmy

7

Просто используйте импульсы.

http://momentjs.com/

function getUTCDate() { return moment($('#sdate').val()).utc().format('YYYY-MM-DDTHH:mm:ssZZ'); }

+1

https://github.com/moment/moment/issues/1407 он будет устаревшим позже. –

0

Я столкнулся с аналогичной проблемой, мой DatePicker конвертировать 14/07/2015 00:00 GMT (Париж) до 13/07/2015 22:00 UTC.

Я использую это для обходного пути, так как я хочу использовать только дату, а не время.

var dt = new Date($scope.END_DATE.value); 
dt.setUTCHours(1); //set to utc 1 a.m. 
$scope.holidays.END_DATE= dt; 

Дата хранения 14/07/2015 01:00 в базе данных.

Надеется, что это помогает

0

Это преобразование между UТСАМИ до IST наоборот Согласовать https://jsfiddle.net/wmhmgrjs/6/

// 2016-08-02 12: 55: 19.743-- UTC < ==> 2016-08 -02 6: 25: [? Как преобразовать дату JavaScript в UTC] 19,743 PM --IST

var date = new Date('8/02/2016 12:55:48 AM UTC'); //2016-07-29 07:02:40.323 
var s=date.toString(); 
alert(s); 

var d = new Date('8/02/2016 6:25:00 PM GMT+0530'); 
//var d = new Date("August 2, 2016 18:26:00"); 
var n = d.toUTCString(); 
alert(n); 
Смежные вопросы