English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemplo de uso do seletor de data e hora datetimepicker e daterangepicker do Bootstrap

在bootstrap中的时间选择器有两种:dateTimePicker和dateRangePicker

1、dateTimePicker好像是官方嫡插件:

需要的文件:

<link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css">
<script src="js/bootstrap-datetimepicker.min.js"></script>
<script src="js/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="js/moment.min.js"></script> 

API直接参考:http://www.bootcss.com/p/bootstrap-datetimepicker/

2、dateRangePicker好像是第三方插件,它最终的是可以实现时间段的选择。

需要的文件: 

<link rel="stylesheet" href="css/daterangepicker-bs3.css">
<script src="js/daterangepicker.js"></script>
<script src="js/moment.min.js"></script> 

html代码: 

<div class="container-fluid">
 <div class="row-fluid" style="margin-top:5px">
 <div class="span4">
 <div class="control-group">
 <label class="control-label">
  日期:
 </label>
 <div class="controls">
  <div id="reportrange" class="pull-esquerda dateRange" estilo="largura:350px">
  <i class="glyphicon glyphicon-calendar fa fa-/i>
  <span id="searchDateRange"></span>
  <b class="caret"></b>
  </div>
 </div>
 </div>
 </div>
 </div>
</div>

 

js代码:

 <script type="text/javascript">
 $(document).ready(function (){
 //plugin de tempo
 $('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + -MM-DD HH:mm:ss'));
 $('#reportrange').daterangepicker(
 {
  // startDate: moment().startOf('day'),
  //endDate: moment(),
  //minDate: '01/01/2012',' //tempo mínimo
  maxDate : moment(), //tempo máximo 
  dateLimit : {
  dias : 30
  }, //máximo intervalo entre início e fim
  showDropdowns : true,
  showWeekNumbers : false, //mostrar número da semana
  timePicker : true, //
  timePickerIncrement : 60, //incremento de tempo, unidade em minutos
  seletor de tempo12Hora : false, //usar12exibir tempo em sistema de 12 horas
  ranges : {
  //último1hora': [moment().subtract('hours',1), moment()],
  hoje': [moment().startOf('day'), moment()],
  ontem': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  último7dia': [moment().subtract('days', 6), moment()],
  último30 dia': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //caixa de seleção de data da posição de popup
  buttonClasses : [ 'btn btn-
  padrão' ],-classeAplicar : 'btn-pequena btn
  azul primária',-classeCancelar : 'btn
  pequeno',-MM-formato : 'YYYY //formatoDeDataDoControlador : 'DD HH:mm:ss',
  separador : ' to ',
  locale : {
  labelAplicar : 'aplicar',
  labelCancelar : 'cancelar',
  labelInicio : 'tempo de início',
  labelFim : 'fim do tempo',
  rangoPersonalizado : 'personalizado',
  diasDaSemana : [ 'domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado' ],
  mesesDoAno : [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho',
  
  primeiroDia : 1
  }
 }, function(start, end, label) {//formatar caixa de exibição de data
  $('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
 });
 //Definir a opção de menu de data --início--
 /*
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "hoje";
 }
 dateOption = "ontem";
 }
 dateOption ="último",7dia";
 }
 dateOption ="último",30 de dia";
 }else if("${riqi}"=='year'){
 dateOption ="último ano";
 }else{
 dateOption = "personalizado";
 }
 $(".daterangepicker").find("li").each(function (){
 if($(this).hasClass("active")){
 $(this).removeClass("active");
 }
 if(dateOption==$(this).html()){
 $(this).addClass("active");
 }
 });*/
 //Definir a opção de menu de data --Fim--
 })
</script>

但是这里的月份汉化存在问题,建议需要去moment.min.js文件里面去修改。 

也可以在后期汉化,比较完整的代码: 

var table;
 $(function () {
 table = $('#example').DataTable({
 "ajax": {}}
 "url":"/exemplo//server_processing_customCUrl.php",
 "data": function ( d ) {
  //Adicionar parâmetros adicionais a serem transmitidos ao servidor
  d.extra_search = $('#reportrange span').html();
 
 
 "serverSide": true,
 
 
 
 
 
 
 
 
 
 
 
 
 "sInfoThousands": ",",
 "oPaginate": {
  "sFirst": "Primeira página",
  "sPrevious": "Página anterior",
  "sNext": "Próxima página",
  "sLast": "Última página"
 },
 "oAria": {
  "sSortAscending": ": Ordenar esta coluna em ordem crescente",
  "sSortDescending": ": Ordenar esta coluna em ordem decrescente"
 }
 },
 "dom":
  "<'row'<'span9'l<'#mytoolbox'>><'span3'f>r>"+
  "t"+
  "<'row'<'span6'i><'span6'p>>"
 initComplete:initComplete
 });
 });
 /**
 * Método executado após a carga e renderização da tabela
 * @param data
 */
 function initComplete(data){
 var dataPlugin =
 '<div id="reportrange" class="puxar-esquerda dateRange" estilo="largura:400px; margin- 10px"> '+
 data:<i class="glyphicon glyphicon-calendar fa fa-/i> '+
 /span> '+
 <b class="caret"></b></div> ';
 $('#mytoolbox').append(dataPlugin);
 //plugin de tempo
 $('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + -MM-DD HH:mm:ss'));
 $('#reportrange').daterangepicker(
 {
  // startDate: moment().startOf('day'),
  //endDate: moment(),
  //minDate: '01/01/2012',' //tempo mínimo
  maxDate : moment(), //tempo máximo
  dateLimit : {
  dias : 30
  }, //máximo intervalo entre início e fim
  showDropdowns : true,
  showWeekNumbers : false, //mostrar número da semana
  timePicker : true, //
  timePickerIncrement : 60, //incremento de tempo, unidade em minutos
  seletor de tempo12Hora : false, //usar12exibir tempo em sistema de 12 horas
  ranges : {
  //último1hora': [moment().subtract('hours',1), moment()],
  hoje': [moment().startOf('day'), moment()],
  ontem': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  último7dia': [moment().subtract('days', 6), moment()],
  último30 dia': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //caixa de seleção de data da posição de popup
  buttonClasses : [ 'btn btn-
  padrão' ],-classeAplicar : 'btn-pequena btn
  azul primária',-classeCancelar : 'btn
  pequeno',-MM-formato : 'YYYY //formatoDeDataDoControlador : 'DD HH:mm:ss',
  separador : ' to ',
  locale : {
  labelAplicar : 'aplicar',
  labelCancelar : 'cancelar',
  labelInicio : 'tempo de início',
  labelFim : 'fim do tempo',
  rangoPersonalizado : 'personalizado',
  diasDaSemana : [ 'domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado' ],
  mesesDoAno : [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho',
  
  primeiroDia : 1
  }
 }, function(start, end, label) {//formatar caixa de exibição de data
  $('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
 });
 //Definir a opção de menu de data --início--
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "hoje";
 }
 dateOption = "ontem";
 }
 dateOption ="último",7dia";
 }
 dateOption ="último",30 de dia";
 }else if("${riqi}"=='year'){
 dateOption ="último ano";
 }else{
 dateOption = "personalizado";
 }
 $(".daterangepicker").find("li").each(function (){
 if($(this).hasClass("active")){
 $(this).removeClass("active");
 }
 if(dateOption==$(this).html()){
 $(this).addClass("active");
 }
 });
 //Definir a opção de menu de data --Fim--
 //Método acionado após a seleção da data
 $("#reportrange").on('apply.daterangepicker',function(){
 //Método de recarregar os dados do dt após a seleção da data
 table.ajax.reload();
 //Obter os parâmetros da solicitação dt
 var args = table.ajax.params();
 console.log("O valor do parâmetro extra_search passado para o backend é:")+args.extra_search);
 });
 function getParam(url) {
 var data = decodeURI(url).split("?];1];
 var param = {};
 var strs = data.split("&");
 for(var i = 0; i<strs.length; i++){
 param[strs[i].split("=")[0]] = strs[i].split("=")[1];
 }
 return param;
 }
 }

Ovo feliz: 

Ao procurar informações sobre daterangepicker na internet, você encontrará um site oficial: http://www.daterangepicker.com/com uma API completa, mas a prática operacional não é conveniente; então, eu mais recomendo daterangepicker-bs3.

Se quiserem aprofundar ainda mais, podem clicar aqui para aprender, e aqui estão dois tópicos interessantes: Tutorial de Aprendizado do Bootstrap Tutorial de Prática do Bootstrap

Isso é tudo o que há no artigo, espero que ajude na aprendizagem de todos e que todos apoiem o Tutorial Grito.

Você também pode gostar