java Date 和 javascript Date

页面导航:首页 > 网络编程 > JavaScript > java Date 和 javascript Date

java Date 和 javascript Date

来源: 作者: 时间:2016-02-05 11:06 【

最近写一个页面,上面要展示下日期。在Java中生成了Date,然后将这个Date通过velocity送入vm模板当中代码如下:var dates = new Date($!{pp date});var dateStr = date2String(dates);其中 date2

最近写一个页面,上面要展示下日期。在中生成了Date,然后将这个Date通过velocity送入vm模板当中

代码如下:

 

var dates = new Date($!{pp.date});
var dateStr = date2String(dates);

其中 date2String是这样的,函数参考

 

 

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,这个比较容易搞定

后面的并没有因为少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 :

 

除了表示中国,还可以表示澳洲和美国中部时间。应该是美国中部时间比较靠谱,咱们在东8区, 那么美国中部应该是在西6区。

 

 

 

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<