起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1546|回复: 2

[处理中1] 从input控件(dateTime类型)获取的时间有错误(BUG?请技术看看)

[复制链接]

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2016-11-1 15:06:41 | 显示全部楼层 |阅读模式
我从input控件(dateTime类型)获取的时间的值为 "2016-11-01T12:52:03.060Z"为什么是UTC时间?不应该是GST(北京时间)吗?
引用一下关于 UTC与GST相关文章 http://www.028888.net/archives/2016_08_1480.html
首先是UTC:时间标准时间

协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

然后是GMT:格林尼治时间

世界时UT  即格林尼治时间,格林尼治所在地的标准时间。以地球自转为基础的时间计量系统。地球自转的角度可用地方子午线相对于地球上的基本参考点的运动来度量。为了测量地球自转,人们在地球上选取了两个基本参考点:春分点(见分至点)和平太阳,由此确定的时间分别称为恒星时和平太阳时。

然后下面是GST时间:也就是北京时间

通常我们在数据库中存放,或者给用户看的时间都是GST时间

现在我们说说上面的时间

2016-08-9T10:01:54.123Z

20160809100154.123Z

首先字母T:他表示后面跟的时间

而最末尾的Z表示UTC统一时间

而123表示的毫秒,大家可以测试将123改为1230,最后得到的时间,秒会增加1秒

网上很多人在搜索000Z是什么意思,其实他的意思就是 0毫秒  utc统一时间
  按照文章的理解,我们目前处于东八区,所以我从input控件(dateTime类型)获取的时间的值应该为 "2016-11-01T4:52:03.060Z" ----->这样才是 UTC。
   然而控件返回给我的时间却是当前东八区的时间而且却告诉 "2016-11-01T12:52:03.060Z"这个时间是UTC时间.
   
   或者需要再设置input控件的什么属性来解决这样的问题?
   谢谢
   

   

1

主题

1831

帖子

821

积分

高级会员

Rank: 4

积分
821
QQ
发表于 2016-11-1 15:57:03 | 显示全部楼层
本帖最后由 大雁子 于 2016-11-1 15:58 编辑

暂时对时区平台没有做处理,建议使用平台提供的justep.Date.XXXX的API来处理时间避免一些时区导致的问题
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-1 16:16:17 | 显示全部楼层
大雁子 发表于 2016-11-1 15:57
暂时对时区平台没有做处理,建议使用平台提供的justep.Date.XXXX的API来处理时间避免一些时区导致的问题 ...

你好。我是说input时间控件返回的数据有问题。

他返回的是UTC的格式,但是UTC的内容却是 北京时间+Z(标识符)
所以取到这个值之后,再放到justep.Date.XXXX这个函数,那么该函数发现是UTC时间,就会把小时+8

例如,我用控件选择时间是 2016-11-01 15:00:00
那么我从控件得到的值会变成 " 2016-11-01T15:00:00.000Z"
接着我把这个值放到:justep.Date.toString(date, "yyyy年MM月dd日hh时mm分ss秒")函数
那么输值会变成: 2016年11月01日23时00分00秒
这里的输出值与我的选择值不一样。

所以我的理解是控件给出的值有问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-6-11 09:37 , Processed in 0.067731 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表