`
lyjilu
  • 浏览: 172161 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java util date转换成js日期

    博客分类:
  • java
阅读更多

问题是这样的,javabean中标准date是使用java.util.date,前台通过ajax获取后台的信息,得到的date对象是date的toString方法返回的字符串(Thu Jul 05 00:00:00 CST 2014),但是在页面却要显示为yyyy-MM-dd的格式,所以,怎么实现框架自动转换而不用程序员每个地方都去写转换呢,想到能实现的办法如下:

1、重写一个Date,讲toString修改为自己定义的格式,如返回时间戳,或者yyyy-MM-dd HH:mm:ss;这样实现带来一个问题,程序员在不知道的情况下,会不知道date需要用框架重写的类,无形中增加了培训成本及出现错误的几率,放弃。

2、在java对象转换成 json格式字符的时候转换,这种方式,貌似可以实现,但经过一番判断,发现json-lib是支持这种方式的,json-lib依赖太多,感觉对框架不理,所以用的是  json-smart,但json-smart貌似没有这种功能,故,这种方式也不适合json-smart。

3、在js中进行转换,对日期格式进行转换,先将Date.toString()后的字符串(Thu Jul 03 16:00:00 CST 2014)转换成 js的日期格式,用js的 new Date()就能转换成功,然后用format方法进行格式化成程序员定义的格式,如:yyyy-MM-dd HH:mm

当采用第三中方式后,转换出来时间确是(Sat Jul 05 2014 14:00:00 GMT+0800 (中国标准时间))。

这里需要设置系统默认市区,

TimeZone tz = TimeZone.getTimeZone("GMT+8:00"); 

TimeZone.setDefault(tz);

用于表示正确时间。系统运行环境默认是GMT+8,这种情况下会出现一个问题:

当用户在美国,或者其它市区,通过浏览器浏览系统会怎样???

浏览器会根据用户操作系统设置默认市区,导致系统中录入的 GMT+8时间转换成用户本地时间,

如:如果服务时间是2014-07-20 10:00:00,用户在 GMT+0:00 ,那么用js new Date(时间格式字符串)转换出的时间是2014-07-20 2:00:00

我想这可能不是很正确,因为如果要考虑用户的时区,那是不是应该在用户录入的时候,就将用户时区考虑进去,转换成GMT+8存入数据库,

如:用户在 GMT+0:00 时区,那么,在选择或者获取系统时间2014-07-21 00:00:00后,存入系统的时间应该是要+8 即:2014-07-21 08:00:00 的。这样才能在上述中,通过js计算时间后,用户看见的是正确的时间格式。不知道现有多少公司的多少系统真正做到国际化!

 最后实现是在js中转换成日期时,删掉了CST,让js认为这个时间是当前时区的时间,以便不进行增加或删除几小时。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics