当前位置: 首页 > news >正文

bootstrp的datetimepicker插件获取选定日期

 碰到一个日期选择,并将日期存储到数据库的需求,需要利用bootstrp的datetimepicker插件获取选定日期,并将其转换为指定字符窜,简单记录下实现的过程。

1. datetimepicker插件的使用

  关于datetimepicker插件的官方文档:

  http://www.bootcss.com/p/bootstrap-datetimepicker/index.htm

  https://eonasdan.github.io/bootstrap-datetimepicker/    (英文原版)

 a,首先从第一个链接中下载相应的JS和CSS文件,并进行引用(需要引用bootstrap-min-css和bootstrap.min.js

      CSS

   <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css">
   <link rel="stylesheet" type="text/css" href="/static/datetimepicker/bootstrap-datetimepicker.min.css">

    JSS

     <script type="text/javascript" src="/static/jquery-3.3.1.js"></script>
     <script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script>
     <script src="/static/datetimepicker/bootstrap-datetimepicker.min.js"></script>
     <script src="/static/datetimepicker/bootstrap-datetimepicker.zh-CN.js"></script>

 b,然后引入插件的布局代码:

<div class='input-group' style="width: 230px;">
    <input type='text' class="form-control" id='datetimepicker'  placeholder="{{ order_date}}"/>
    <span class="input-group-addon">
        <span class="glyphicon glyphicon-calendar"></span>
    </span>
</div>

  其中只要<input>标签中的id=‘’datetimepicker“ 设置好就行,其他的为样式和图标

 c,在js代码中进行显示,代码如下:

<script>   
 //日历插件, 官网地址:https://eonasdan.github.io/bootstrap-datetimepicker/

    $('#datetimepicker').datetimepicker({
        minView: "month",  //设置月视图
        language: "zh-CN",
        sideBySide: true,        // 同时选择日期和时间,此处月视图可以里不用设
        format: 'yyyy-mm-dd',    //设置日期显示格式
        startDate: new Date(),    //设置开始时间,早于此刻的日期不能选择
        bootcssVer: 3,            //显示向左,向右的箭头
        autoclose: true,      //选择日期后自动关闭
        todayHighlight: true,
        todayBtn: true,
    }).on('changeDate', change_date);
    function change_date(e) {
        //console.log(e);
        //console.log(e.date);
        //console.log(e.date.valueOf());
        window.choose_date = e.date.format("yyyy-MM-dd");
        //location.href = "/order_list/?order_date=" + window.choose_date;

    };
    //$('#datetimepicker').datetimepicker().on('show',function(e){
        //console.log(e);
    //});
</script>

    其中只要设置 $('#datetimepicker').datetimepicker();就能显示日历,括号中的参数为设置日历的格式,见官网option描述;

      为日历绑定事件的基本格式如下面,第一个绑定日期改变事件,当日期变化时会执行后面的匿名函数(也可以将函数定义在外面),第二个绑定显示事件,当日历显示时触发相应的事件,更多事件见官网event描述。

  $('#datetimepicker').datetimepicker().on('changeDate',function(e){

    })

  $('#datetimepicker').datetimepicker().on('show',function(e){

    })

    函数的参数e中封装了和日期相关的数据,如下面所示,其中两个数据比较重要,e.date能拿到选定的日期时间数据,为js的Date对象,e.timeStamp为时间戳。

    至此,datetimepicker布局完成,并为其绑定事件,通过e.date 能拿到用户选择的日期数据,接下来将日期进行格式化成指定字符窜。

2. Date.prototype扩展Date对象

    在上述绑定的onchange事件中的代码 e.date.format("yyyy-MM-dd"),format()函数将拿到的e.date转化为了指定格式的字符窜,详细实现如下:

    在javascript中,设置Date.prototype可以扩展Date对象,将日期转换为指定格式字符窜:

扩展代码如下:

    // 对Date的扩展,将 Date 转化为指定格式的String 
   // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
   // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
   // 例子: 
   // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
   // (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
   Date.prototype.format = function(fmt)
{ 
  var o = {
   "M+" : this.getMonth()+1,                 //月份
   "d+" : this.getDate(),                    //"h+" : this.getHours(),                   //小时
   "m+" : this.getMinutes(),                 //"s+" : this.getSeconds(),                 //"q+" : Math.floor((this.getMonth()+3)/3), //季度
   "S"  : this.getMilliseconds()             //毫秒
  };
  if(/(y+)/.test(fmt))
   fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)
   if(new RegExp("("+ k +")").test(fmt))
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  return fmt;
}

使用方法代码:  (注意年月日的大小写 yyyy-MM-dd)

//使用方法
var now = new Date();
console.log(now);
var nowStr = now.format("yyyy-MM-dd hh:mm:ss");
console.log(nowStr);

//使用方法2:
var testDate = new Date();
console.log(testDate);
var testStr = testDate.format("yyyy年MM月dd日hh小时mm分ss秒");
console.log(testStr);

//示例:
//alert(new Date().format("yyyy年MM月dd日"));
//alert(new Date().format("MM/dd/yyyy"));
//alert(new Date().format("yyyyMMdd"));
//alert(new Date().format("yyyy-MM-dd hh:mm:ss"));

执行效果如下:

    相关博客:   https://blog.csdn.net/hizzyzzh/article/details/51212867

转载于:https://www.cnblogs.com/silence-cho/p/10202865.html

相关文章:

  • 08年cpu
  • VMware网络适配器的选择
  • 三、MyBatis-全局配置文件
  • Legato Backup Server DR SOP
  • HDFS,MongoDB,HBase的区别和使用场景
  • WinAVI Video Converter v8.0 注册码
  • 不利用C语言库函数,实现字符串相关函数
  • 中午又可以打篮球了
  • UI框架
  • 中央气象台发寒潮橙色警报 将现大范围大风降温
  • Visual Studio 2017打包安装项目
  • 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用...
  • RDD基础知识
  • 使用
  • JuJu团队1月7号工作汇报
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Apache的基本使用
  • Elasticsearch 参考指南(升级前重新索引)
  • JS笔记四:作用域、变量(函数)提升
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Markdown 语法简单说明
  • Python - 闭包Closure
  • python 装饰器(一)
  • React+TypeScript入门
  • Vue2.0 实现互斥
  • vue自定义指令实现v-tap插件
  • Webpack 4 学习01(基础配置)
  • 初识 beanstalkd
  • 创建一个Struts2项目maven 方式
  • 那些被忽略的 JavaScript 数组方法细节
  • 漂亮刷新控件-iOS
  • 前端面试之闭包
  • 设计模式走一遍---观察者模式
  • 算法-图和图算法
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)常见O(n^2)排序算法解析
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (离散数学)逻辑连接词
  • (利用IDEA+Maven)定制属于自己的jar包
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (转)3D模板阴影原理
  • .gitignore文件_Git:.gitignore
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net web项目 调用webService
  • .net6+aspose.words导出word并转pdf
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .Net中的集合