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) ...
随机推荐
- android平板Home键的监听
关于android4.2平板Home键的监听 1.android4.0以上的平板Home键是不能屏蔽的,至少在应用层是这样.但是可以监听Home键的触发,主要是通过广播的监听来接受Hone键的触发广播 ...
- BZOJ 4143: [AMPPZ2014]The Lawyer( sort )
水题... 排序搞出每天的会议有哪些, 然后再按照会议的开始时间和结束时间排序, 最晚开始的和最早结束的会议不是同一场而且最晚开始的时间>最早结束的会议就有可能方案 -------------- ...
- C# 使用IENUMERABLE,YIELD
C# 使用IENUMERABLE,YIELD 前言 在上篇文章中我得出结论,遍历迭代器修改迭代器中项目的值未生效,是因为使用了yield return,并且每次遍历迭代器都执行返回迭代器的方法.这篇文 ...
- Android学习笔记:Activity生命周期详解
进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...
- HTML——左右側边栏布局
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- Thawte SSL123 SSL证书-中国证书.com
Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...
- 使用ViewPager模拟实现应用程序启动界面
经常在开发应用程序的时候,软件启动有启用动画界面,一般使用图片来进行界面该版本最新更新等等内容,今天来使用ViewPager来模拟实现这功能,也希望对大家有个小小的参考作用,在以后的项目中能够使用到. ...
- TImage也有OnClick事件,可以当按钮使用,配上合适的图片(背景透明,效果前凸)更是几乎以假乱真
本质上TImage与TSpeedButton没有什么区别,都是没有句柄的,但都可以执行OnClick事件.有空分析一下.
- 官方发布的新版本Qt已经不支持XP了,要自己从源代码编译
官方发布的新版本Qt已经不支持XP了,要自己从源代码编译,编译选项里有个-target项,用来提供XP支持的,编译时加上-target xp就可以了 http://www.qtcn.org/bbs/r ...
- Can't call commit when autocommit=true(转)
java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLEx ...