http://tarruda.github.io/bootstrap-datetimepicker/から bootstrap-datetimepicker を使用し
ています。これにより、日時をローカル時間で選択するオプションが提供されます。理解できないのは、CGI に送信する前に UTC に変換する方法です。 . 私のサーバーは GMT タイムゾーンに設定されており、入力は任意のタイムゾーンから受信できるため、これを行う必要があります。
そのため、ユーザーに tz で時間を選択してもらいたいのですが、その選択を gmt に変換して、それを cgi スクリプトに送信します。
この問題を解決するための他のより良い方法があれば、それをいただければ幸いです。
<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 と Chrome の両方で動作するようにさらに更新
<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>