JavaScript时间转换CST到GMT

短命女 2022-09-22 15:49 276阅读 0赞

做了一个倒计时的JavaScript,折腾了老半天

分享一下经历

最终的实现效果

这里写图片描述

起初在安卓上是可以显示的,效果和上图类似

然而在苹果上是没有效果的

问题

时间倒退到那个没有效果的时候

这里写图片描述

关键代码

  1. //一个输入框,里面放着报名开始的时间
  2. <input id="signStartTime" type="hidden" value="<fmt:formatDate value="${activity.signStartTime }" pattern="yyyy-MM-dd HH:mm:ss" />">
  3. <script type="text/javascript"> var dateStr=$("#signStartTime").val().trim(); var startTime = new Date(Date.parse(dateStr)); var nowTime = new Date(); console.info("startTime:" + startTime); console.info("nowTime:"+nowTime); </script>

问题是在chrome浏览器可以,而在Safari不可以,也就是在苹果手机上也不可以。

看原因

chrome

这里写图片描述

Safari

这里写图片描述

看来是时间格式的问题

我把input中的时间不进行format

  1. <input id="signStartTime" type="hidden" value="${activity.signStartTime }">

看效果

这里写图片描述

这次两个都对了,可是时间却不对,时间整整慢了14个小时

这里写图片描述

深层原因

还是打开调试工具看看

这里写图片描述

一个是CST的一个是GMT的

关于CST和GMT之间的转换,搜索无果,就写了一个笨办法

关键代码

  1. var dateStr=$("#signStartTime").val().trim();
  2. //console.info(dateStr);
  3. var dateStr=$("#signStartTime").val().trim().split(" ");
  4. // 就是这一行代码和上面的字符串分隔,然后拼接而成的GMT
  5. var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
  6. var startTime = new Date(Date.parse(strGMT));
  7. var nowTime = new Date();
  8. console.info("startTime:" + startTime);
  9. console.info("nowTime:"+nowTime);

这里写图片描述

这里写图片描述

好了,这次时间也对上了。

参考文献

Date.parse()

发表评论

表情:
评论列表 (有 0 条评论,276人围观)

还没有评论,来说两句吧...

相关阅读

    相关 GMT UTC CST

    省流:国内直接用GMT+8 解释: 1. GMT,格林威治时间。即0时区。 1. 国内各地不区分时区,任何地方都用北京时间(乌鲁木齐拉萨等地并不在东8区),即GMT+

    相关 cst时间(utc和cst时间)

    美国洛杉矶22点是中国几点? 美国洛杉矶用的是太平洋时区,冬令时与北京相差16小时,所以美国洛杉矶22点是中国第二天14点;夏令时比标准时间早一个小时,与北京相差15小时