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

Bootstrap datetimepicker 및 daterangepicker 사용 예제 분석

bootstrap에서 시간 선택기는 dateTimePicker와 dateRangePicker 두 가지가 있습니다.

1dateTimePicker는 공식 플러그인입니다:

필요한 파일:

<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/

2dateRangePicker는 제3자 플러그인으로, 시간대 선택을 구현할 수 있습니다.

필요한 파일: 

<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-left dateRange" style="width:350px">
  <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
  <span id="searchDateRange"></span>
  <b class="caret"></b>
  </div>
 </div>
 </div>
 </div>
 </div>
</div>

 

js 코드:

 <script type="text/javascript">
 $(document).ready(function (){
 //시간 플러그인
 $('#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', //최소 시간
  maxDate : moment(), //최대 시간 
  
  days : 30
  }, //시작과 끝 날짜의 최대 간격
  showDropdowns : true,
  showWeekNumbers : false, //주 번호를 표시
  timePicker : true, //
  timePickerIncrement : 60, //시간의 증가량, 단위는 분
  timePicker12Hour : false, //사용1224시간제로 시간을 표시
  ranges : {
  //최근1시간': [moment().subtract('hours',1), moment()],
  오늘': [moment().startOf('day'), moment()],
  어제': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  최근7일': [moment().subtract('days', 6), moment()],
  최근30일': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //날짜 선택 상자의弹出位置
  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 : [ '1월', '2월', '3월', '4월', '5월', '6월',
  
  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'));
 });
 //날짜 메뉴 항목을 설정합니다 --시작--
 /*
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "오늘";
 }
 dateOption = "어제";
 }
 dateOption ="최근"7일";
 }
 dateOption ="최근"30일";
 }else if("${riqi}"=='year'){
 dateOption ="최근 1년";
 }else{
 dateOption = "자체 정의";
 }
 $(".daterangepicker").find("li").each(function (){
 if($(this).hasClass("active")){
 $(this).removeClass("active");
 }
 if(dateOption==$(this).html()){
 $("this").addClass("active");
 }
 });*/
 //날짜 메뉴 항목을 설정합니다 --끝--
 })
</script>

하지만 이 부분의 월 번역에는 문제가 있어 moment.min.js 파일을 수정하는 것이 좋습니다. 

도중에 번역할 수도 있으며, 더 완전한 코드는 다음과 같습니다: 

var table;
 $(function () {
 table = $('#example').DataTable({
 "ajax": {}}
 "url":"/example/resources/server_processing_customCUrl.php",
 "data": function ( d ) {
  //서버에 전달할 추가 파라미터 추가
  d.extra_search = $('#reportrange span').html();
 
 
 "serverSide": true,
 "language": {
 "sProcessing": "처리 중...",
 "sLengthMenu": "_MENU_ 개의 결과를 표시",
 "sZeroRecords": "일치하는 결과가 없음",
 "sInfo": "_START_에서 _END_ 개의 결과를 표시, 총 _TOTAL_ 개",
 "sInfoEmpty": "0에서 0 개의 결과를 표시, 총 0 개",
 "sInfoFiltered": "(최대 _MAX_ 개의 결과에서 필터링됨)",
 "sInfoPostFix": "",
 "sSearch": "검색:"
 "sUrl": "",
 "sEmptyTable": "표에 데이터가 없음",
 "sLoadingRecords": "로드 중...",
 "sInfoThousands": ",",
 "oPaginate": {
  "sFirst": "처음 페이지",
  "sPrevious": "이전 페이지",
  "sNext": "다음 페이지",
  "sLast": "마지막 페이지"
 },
 "oAria": {
  "sSortAscending": ": 이 열을 오름차순으로 정렬",
  "sSortDescending": ": 이 열을 내림차순으로 정렬"
 }
 },
 "dom":
  "<'row'<'span9'l<'#mytoolbox'>><'span3'f>r>"+
  "t"+
  "<'row'<'span6'i><'span6'p>>" ,
 initComplete:initComplete
 });
 });
 /**
 * 표시 로드 및 렌더링이 완료된 후 실행할 메서드
 * @param data
 */
 function initComplete(data){
 var dataPlugin =
 '<div id="reportrange" class="pull-left dateRange" style="width:400px;margin-left: 10px"> '+
 날짜:<i class="glyphicon glyphicon-calendar fa fa-calendar"></i> '+
 <span id="searchDateRange"></span> '+
 <b class="caret"></b></div> ';
 $('#mytoolbox').append(dataPlugin);
 //시간 플러그인
 $('#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', //최소 시간
  maxDate : moment(), //최대 시간
  
  days : 30
  }, //시작과 끝 날짜의 최대 간격
  showDropdowns : true,
  showWeekNumbers : false, //주 번호를 표시
  timePicker : true, //
  timePickerIncrement : 60, //시간의 증가량, 단위는 분
  timePicker12Hour : false, //사용1224시간제로 시간을 표시
  ranges : {
  //최근1시간': [moment().subtract('hours',1), moment()],
  오늘': [moment().startOf('day'), moment()],
  어제': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],
  최근7일': [moment().subtract('days', 6), moment()],
  최근30일': [moment().subtract('days', 29), moment()]
  },
  opens : 'right', //날짜 선택 상자의弹出位置
  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 : [ '1월', '2월', '3월', '4월', '5월', '6월',
  
  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'));
 });
 //날짜 메뉴 항목을 설정합니다 --시작--
 var dateOption ;
 if("${riqi}"=='day') {
 dateOption = "오늘";
 }
 dateOption = "어제";
 }
 dateOption ="최근"7일";
 }
 dateOption ="최근"30일";
 }else if("${riqi}"=='year'){
 dateOption ="최근 1년";
 }else{
 dateOption = "자체 정의";
 }
 $(".daterangepicker").find("li").each(function (){
 if($(this).hasClass("active")){
 $(this).removeClass("active");
 }
 if(dateOption==$(this).html()){
 $("this").addClass("active");
 }
 });
 //날짜 메뉴 항목을 설정합니다 --끝--
 //날짜를 선택하면 재로드되는 메서드를 트리거합니다
 $("#reportrange").on('apply.daterangepicker',function(){
 //날짜를 선택하면, dt의 데이터를 다시 로드하는 메서드를 호출합니다
 table.ajax.reload();
 //dt 요청 参数를 가져옵니다
 var args = table.ajax.params();
 console.log("extra_search에 추가된 추가적인 배경 参数 값은: "+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;
 }
 }

행복한 소리: 

daterangepicker의 자료를 인터넷에서 검색할 때, 꽤 공식적인 웹사이트를 찾을 수 있습니다: http://www.daterangepicker.com/api가 전면적이지만, 실제 작업 습관은 편리하지 않기 때문에, 저는 daterangepicker를 더 추천합니다;-bs3

여러분이 더 깊이 배우고 싶다면, 여기를 클릭하여 배우세요. 또한, Bootstrap 학습 교본과 Bootstrap 실전 교본 두 가지 흥미로운 주제를 추가합니다:

이 글의 모든 내용이 끝이며, 여러분의 학습에 도움이 되길 바랍니다. 또한, 나의呐喊 교본에 많은 지원을 부탁드립니다.

추천해드립니다