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

Análisis de ejemplo de uso de datetimepicker y daterangepicker de 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-izquierda dateRange" estilo="ancho:350px">
  <i class="glyphicon glyphicon-calendario fa fa-calendario"></i>
  <span id="searchDateRange"></span>
  <b class="caret"></b>
  </div>
 </div>
 </div>
 </div>
 </div>
</div>

 

js代码:

 <script type="text/javascript">
 $(document).ready(function (){
 //complemento de tiempo
 $('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + moment().format('YYYY-MM-DD HH:mm:ss'));
 $('#reportrange').daterangepicker(
 {
  // startDate: moment().startOf('day'),
  //endDate: moment(),
  //minDate: '01/01/2012', //tiempo mínimo
  maxDate : moment(), //tiempo máximo 
  dateLimit : {
  days :, 30
  }, //máximo intervalo entre la fecha de inicio y de finalización
  showDropdowns : true,
  showWeekNumbers : false, //mostrar el número de la semana
  timePicker : true, //mostrar las horas y minutos
  timePickerIncrement :, 60, //incremento del tiempo, en minutos
  seleccionador de tiempo12Hour : false, //usar12mostrar la hora en formato de 12 horas
  ranges : {
  //más reciente1hora': [moment().subtract('hours',1), moment()],
  hoy': [moment().startOf('day'), moment()],
  ayer': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  más reciente7día': [moment().subtract('days', 6), moment()],
  más reciente30 día': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //ubicación emergente del cuadro de selección de fechas
  buttonClasses : [ 'btn btn-default' ],
  applyClass : 'btn-small btn-primary blue',
  cancelClass : 'btn-small',
  format : 'YYYY-MM-DD HH:mm:ss', //控件中from和to 显示的日期格式
  separator : ' to ',
  locale : {
  applyLabel : '确定',
  cancelLabel : '取消',
  fromLabel : '起始时间',
  toLabel : '结束时间',
  customRangeLabel : '自定义',
  daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
  monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月',
  '七月', '八月', '九月', '十月', '十一月', '十二月' ],
  firstDay : 1
  }
 }, function(start, end, label) {//格式化日期显示框
  $('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
 });
 //Configurar la opción seleccionada del menú de fechas --开始--
 /*
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "今日";
 }else if("${riqi}"=='yday') {
 dateOption = "昨日";
 }else if("${riqi}"=='week'){
 dateOption ="最近7日";
 }else if("${riqi}"=='month'){
 dateOption ="最近30日";
 }else if("${riqi}"=='year'){
 dateOption ="最近一年";
 }else{
 dateOption = "自定义";
 }
 $$(".daterangepicker$$").$$find$$("li$$").$$each$$($$function$$(){$$}{$$});
 if($$this$$.$$has$$Class("active")){
 $$this$$.removeClass("active");
 }
 if(dateOption==$(this).html()){
 $(this).addClass("active");
 }
 });*/
 //Configurar la opción seleccionada del menú de fechas --Finalizar--
 })
</script>

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

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

var table;
 $(function () {
 table = $('#example').DataTable({
 "ajax": {}}
 "url":"/ejemplo/recursos/server_processing_customCUrl.php",
 "data": function ( d ) {
  //Agregar parámetros adicionales a enviar al servidor
  d.extra_search = $('#reportrange span').html();
 }},
 "processing": true,
 "serverSide": true,
 "language": {
 "sProcessing": "Procesando..."
 "sLengthMenu": "Mostrar _MENU_ elementos",
 "sZeroRecords": "No se encontraron coincidencias",
 "sInfo": "Mostrando _START_ a _END_ de _TOTAL_ elementos",
 "sInfoEmpty": "Mostrando 0 a 0 de 0 elementos",
 "sInfoFiltered": "(Filtrado de _MAX_ elementos)",
 "sInfoPostFix": "",
 "sSearch": "Buscar:",
 "sUrl": "",
 "sEmptyTable": "No hay datos en la tabla",
 "sLoadingRecords": "Cargando..."
 "sInfoThousands": ",",
 "oPaginate": {
  "sFirst": "Primera página",
  "sPrevious": "Página anterior",
  "sNext": "Página siguiente",
  "sLast": "Última página"
 },
 "oAria": {
  "sSortAscending": ": Ordenar esta columna en orden ascendente",
  "sSortDescending": ": Ordenar esta columna en orden descendente"
 }
 },
 "dom":
  "<'fila'<'span9'l<'#mytoolbox'>><'span3'f>r>"+
  "t"+
  "<'fila'<'span6'i><'span6'p>>"
 initComplete:initComplete
 });
 });
 /**
 * Método a ejecutar después de que se haya cargado y renderizado la tabla
 * @param data
 */
 function initComplete(data){
 var dataPlugin =
 '<div id="reportrange" class="tirar-izquierda dateRange" estilo="ancho:400px; margen-left: 10px"> '+
 fecha:<i class="glyphicon glyphicon-calendario fa fa-calendario"></i> '+
 <span id="searchDateRange"></span> '+
 <b class="caret"></b></div> ';
 $('#mytoolbox').append(dataPlugin);
 //complemento de tiempo
 $('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + moment().format('YYYY-MM-DD HH:mm:ss'));
 $('#reportrange').daterangepicker(
 {
  // startDate: moment().startOf('day'),
  //endDate: moment(),
  //minDate: '01/01/2012', //tiempo mínimo
  maxDate : moment(), //tiempo máximo
  dateLimit : {
  days :, 30
  }, //máximo intervalo entre la fecha de inicio y de finalización
  showDropdowns : true,
  showWeekNumbers : false, //mostrar el número de la semana
  timePicker : true, //mostrar las horas y minutos
  timePickerIncrement :, 60, //incremento del tiempo, en minutos
  seleccionador de tiempo12Hour : false, //usar12mostrar la hora en formato de 12 horas
  ranges : {
  //más reciente1hora': [moment().subtract('hours',1), moment()],
  hoy': [moment().startOf('day'), moment()],
  ayer': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  más reciente7día': [moment().subtract('days', 6), moment()],
  más reciente30 día': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //ubicación emergente del cuadro de selección de fechas
  buttonClasses : [ 'btn btn-default' ],
  applyClass : 'btn-small btn-primary blue',
  cancelClass : 'btn-small',
  format : 'YYYY-MM-DD HH:mm:ss', //控件中from和to 显示的日期格式
  separator : ' to ',
  locale : {
  applyLabel : '确定',
  cancelLabel : '取消',
  fromLabel : '起始时间',
  toLabel : '结束时间',
  customRangeLabel : '自定义',
  daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
  monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月',
  '七月', '八月', '九月', '十月', '十一月', '十二月' ],
  firstDay : 1
  }
 }, function(start, end, label) {//格式化日期显示框
  $('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
 });
 //Configurar la opción seleccionada del menú de fechas --开始--
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "今日";
 }else if("${riqi}"=='yday') {
 dateOption = "昨日";
 }else if("${riqi}"=='week'){
 dateOption ="最近7日";
 }else if("${riqi}"=='month'){
 dateOption ="最近30日";
 }else if("${riqi}"=='year'){
 dateOption ="最近一年";
 }else{
 dateOption = "自定义";
 }
 $$(".daterangepicker$$").$$find$$("li$$").$$each$$($$function$$(){$$}{$$});
 if($$this$$.$$has$$Class("active")){
 $$this$$.removeClass("active");
 }
 if(dateOption==$(this).html()){
 $(this).addClass("active");
 }
 });
 //Configurar la opción seleccionada del menú de fechas --Finalizar--
 //Método para desencadenar la recarga después de seleccionar la fecha
 $("#reportrange").on('apply.daterangepicker',function(){
 //Método para recargar los datos de dt después de seleccionar la fecha
 table.ajax.reload();
 //Obtener los parámetros de solicitud de dt
 var args = table.ajax.params();
 console.log("El valor del parámetro extra transmitido al backend extra_search es:")+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;
 }
 }

Huevo de felicidad: 

Al buscar información sobre dateranggepicker en línea,se encontrará un sitio web oficial: http://www.daterangepicker.com/,api completo,pero la costumbre de operación real no es conveniente;por lo que prefiero daterangepicker-bs3.

Si还想深入学习,可以点击此处进行学习,再为大家附上两个精彩的专题:Tutorial de Bootstrap Tutorial de Práctica de Bootstrap

Este es el contenido completo del artículo, espero que sea útil para su aprendizaje y que nos apoyen más en el tutorial de gritos.

Te gustará