java Date 和 javascript Date
近期写一个页面。上面要展示下日期。
在Java中生成了Date。然后将这个Date通过velocity送入vm模板其中
代码例如以下:
var dates = new Date("$!{pp.date}");
var dateStr = date2String(dates);
当中 date2String是这种。函数參考
http://www.w3school.com.cn/jsref/jsref_obj_date.asp
function date2String(date) {
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var monthStr = (month <= 9 ? "0":"") + month;
var dayStr = (day <= 9 ? "0":"") + day;
var hourStr = (hour <= 9 ? "0":"") + hour;
var minuteStr = (minute <= 9 ? "0":"") + minute;
var secondStr = (second <= 9 ? "0":"") + second; return ""+year+"-"+monthStr+"-"+dayStr+" "+hourStr+":"+minuteStr+":"+secondStr;
}
结果解析发现时间全乱了。
首先是月份不正确。这个是一个自己粗心的bug,由于getMonth得到的结果是0-11的,因此须要在后面+1,这个比較easy搞定
后面的并没有由于少1的原因而变形。
如今有两种方案:其一。直接传递一个Java改动好格式后的字符串给js,其二想想别的办法。
本来想偷懒的就用其一吧。可是想了想还是其二更能偷懒,并且还能学到新东西。用其二吧。
想了想直接将Date对象传递过来可能在实现上确实比較诡异。Date应该都是从1970年開始时的时间差,因此用一个long做构造函数的參数应该是有的。
当然在上面的
中文w3c的网页上仅仅给出了一种构造方法,即取得当前的时间。
连前面的直接赋值date的都没有事,因此认为应该有别的构造函数,因此选择再找找看。查看下Date的构造函数:
http://www.tutorialspoint.com/javascript/javascript_date_object.htm
用
new Date(milliseconds)
靠谱一点,毕竟是存放在底层的数据。
因此改成:
var dates = new Date($!{pp.date.getTime()});
靠谱多啦。
搞定,看看原来的为啥这么不靠谱。
原来传递进去的Date是:
date=Sun Dec 14 09:40:11 CST 2014
date=Sat Dec 13 23:54:00 CST 2014
可是:
变成了 2014-12-14 23:40:11
和 2014-12-14 13:54:00
都是添加了14个小时!
打印后发现:
dates=Sun Dec 14 2014 13:54:00 GMT+0800
dates=Sun Dec 14 2014 23:40:11 GMT+0800
那么就是时区的问题了!
依据 Wiki 上面的CST :
http://zh.wikipedia.org/wiki/CST
除了表示中国。还能够表示澳洲和美国中部时间。应该是美国中部时间比較靠谱。咱们在东8区, 那么美国中部应该是在西6区。
查看下果不其然。
因此js是把CST当成了美国中部时间(Central Standard Time (North America))而不是(China
Standard Time)。
从而导致相应的错误。折腾了一下还是能找到原因的哈哈。
加油。
======
PS。还是要细心啊,不能老出问题了才发现问题然后去补救。測试的时候一定要细心。
java Date 和 javascript Date的更多相关文章
- java基础63 JavaScript中的Number、Math、String、Date对象(网页知识)
本文知识点(目录): 1.Number对象 2.Math对象 3.String对象 4.Date对象 (日历例子) 1.Number对象 1.1.Number对象的创建方式 方式1: ...
- 【JavaScript】JS将Java的Timestamp转为Date类型
遇到一个小需求,由于要填充日期插件里的数据,前台要把java后台传来的Date类型的数据转成YYYY-MM-DD格式的时间数据.通过json传输,Java的Date类型的数据自动转成了时间戳,例如 “ ...
- java web中日期Date类型在页面中格式化显示的三种方式
一般我们经常需要在将服务器端的Date类型,传到页面进行显示,这就涉及到一个如何格式化显示Date类型的问题,一般我们有三种方式进行: 1)在服务端使用SimpleDateFormat等类格式化成字符 ...
- JavaScript Date日期对象以及日期格式化方法
前言 Date对象是javascript语言中内置的数据类型,用于提供日期和时间的操作接口.Date对象是在早期java中的java.util.Date类基础上创建的,为此,Date类型使用自UTC1 ...
- JavaScript—Date对象详情
Date对象概述 javaScript 提供了 Date 类型来处理时间和日期.Date 对象内置一系列获取和设置日期时间信息的方法.(不是内置对象,需要自己new) javaScript 中的 Da ...
- JAVA基础知识xml,date
虽然说看文档最好是看官方原来的文档,但是呢,下面是我看别的人的总结,算做抛砖引玉吧,如果有不对的,我会在后期给更正或者自己来写一篇 1,JAVA中对xml的操作,包括schema,dtd等相关知识:标 ...
- JavaScript Date 对象
JavaScript Date 对象 Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: new Date(). 以上四种方法同样可以创建 Date 对象: var d = n ...
- JavaScript Date对象 日期获取函数
JavaScript Date对象使用小例子: 运行结果: 总结: 1.尽管我们认为12月是第12个月份,但是JavaScript从0开始计算月份,所以月份11表示12月: 2.nowDate.set ...
- [转]javascript Date format(js日期格式化)
方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...
随机推荐
- javascript每日一练(十)——运动二:缓冲运动
一.缓冲运动 实现原理:(目标距离-当前距离) / 基数 = 速度(运动距离越大速度越小,运动距离和速度成反比) (500 - oDiv.offsetLeft) / 7 = iSpeed; 需要注意: ...
- PredictionIO Open Source Machine Learning Server
PredictionIO Open Source Machine Learning Server Build Smarter Software with Machine Learning Predic ...
- hive怎样处理多分隔符数据
问题描写叙述: 大数据维稳需求中,客户提供的測试数据为多个字符做分隔符('|#'),在pig中会直接报错,hive中仅仅认第一个分隔符. 因为数据量比較大(160G),在文本中替换成单个字符分 ...
- 设置HTTP代理
Maven通过<<UserHome>>/.m2/settings.xml(如果没有该文件,复制<<MavenHome>>/conf/settings.x ...
- 基于visual Studio2013解决C语言竞赛题之1045打印成绩
题目 解决代码及点评 /* 功能:用记录来描述一个学生的成绩情况,内容包括:姓名.学号.数学成绩和PASCAL成绩. 要求对一个小组的10个学生的成绩进行统计处理: 1)计算学生的总 ...
- Swift - 同步请求获取网络数据
使用NSURLConnection可以实现http通信.它提供了异步请求和同步请求两种通信方式. 注意:同步请求数据会造成主线程阻塞,必须请求结束后用户才能做其他的操作,所有通常在请求大数据或者网络不 ...
- asp.net2.0安全性(1)--用户角色篇(代码实现1)--转载来自车老师
创建用户: MembershipCreateStatus mc; Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQ ...
- 基于visual Studio2013解决C语言竞赛题之1074八皇后
题目 解决代码及点评 /************************************************************************/ /* ...
- Windows8 Metro快捷键 | Win8迷
Windows8 Metro快捷键 | Win8迷 Win + Q : 打开 搜索面板 Win + C : 打开屏幕右侧的Charms简化菜单 Win + 空格 : 切换输入语言和键盘布局
- UVA 10160 Servicing Stations(深搜 + 剪枝)
Problem D: Servicing stations A company offers personal computers for sale in N towns (3 <= N < ...