Java/JSP/JS中的Date
在Java/JSP/JavaScript中都有Date类型
Date所在地 | Date类型 |
---|---|
Java中Date | java.util.Date |
JSP中fmt:formatDate | JSP标签,可接收java.util.Date |
JS中Date | JavaScript的Date对象和java.util.Date没关系 |
JavaScript中的Date虽然和Java没一毛钱关系,但是也可以用java.util.Date进行直接初始化
前端页面JS到后台Controller
从前端可以通过字符串的形式发送Date到后台,然后使用Spring的参数绑定接收
JS请求参数
1 | {"addDate":"2016-08-01"} |
Spring参数绑定接收
1 | @DateTimeFormat(pattern = "yyyy-MM-dd") |
后台Controller到JSP
通过Model放入JSP
1 | model.addAttribute("addDate",addDate); |
JSP中格式化取出,如果不进行格式化,是输出的Date.toString()的字符串
1 | <span> |
Ajax到JS
如果是通过Jquery的Ajax发送请求得到返回的Date类型,在JS中会被接收成一个JavaScript的Date
比如2016-08-08 15:57:45这个日期
1 | testDate:Object |
其中不便于让人理解的是 month 和 year 的数值,在JS中
- month: 月份是从0开始到11结束,分别代表1-12月
- year : 年份是从1900年作为基点到目前的时间,所以2016年是 1900+116
JSP传递到JS
在JSP中,如果直接取值 ${addDate} 得到是Date.toString()的输出字符串
1 | Wed Jul 06 00:00:00 CST 2016 |
可以通过该字符串实例化一个JavaScript的Date对象,例如
1 | var date = new Date("${addDate}"); <====JSP文件中的样子 |
JavaScript中的Date类型
JavaScript的Date 可以直接用Java的Date字符串进行实例化 ,其数据结构为
1 | var Date = { |
对于其中的参数提供了各种Get方法,其中需要注意的有以下几个
- getFullYear() : 这个是获得当前的绝对年份,比如2016
- getYear() : 这个是获得Year的值,比如2016年是相对1900年的116
- getMonth(): 这个获得是当前月份减去1,原因是因为0-11代表1-12月