• 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。还是要细心啊,不能老出问题了才发现问题然后去补救。測试的时候一定要细心。







  • 相关阅读:
    Reference Counting GC (Part two :Partial Mark & Sweep)
    Reference Counting GC (Part one)
    Union File System
    Linux Cgroups
    Mark Sweep GC
    取模运算
    负数取模怎么算
    牛客【2021寒假集训营第一场】J-一群小青蛙呱蹦呱蹦呱
    记codeforces一个简单模拟题
    筛法求素数
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5066713.html
Copyright © 2020-2023  润新知