如何在不同时区的服务器间传递时间戳

如何在不同时区的服务器间传递时间戳,第1张

两个在不同时区的服务器之间要传递依赖时间戳的数据,假设所有服务上的时区均 设置正确 ,各自都取 UTC 时间戳作为基准数据。
版本1:在一开始直接使用 `time()` (PHP) 和 `timemktime(timetuple)` (Python), 经实验发现,这样取的只是本地化的时间戳(带有时区差异)
版本2:后来换个方法 (PHP 代码来自 stackoverflow):
$utc_str = gmdate("M d Y H:i:s", time());
$utc = strtotime($utc_str);
Python:
import time
import datetime
dt = datetimedatetimeutcnow()
now_float = timemktime(dttimetuple())
now = int(now_float)
经测试发现不符,strtotime 函数也是返回本地化时间。
还有什么办法?
------思考中的分隔线------
回想一下 Unix 时间戳的定义:指的是从Unix 0 时(1970年1月1号 0点0分0秒)到当前时间的秒数,而这里的 0 时也应当是带时区的!
这一点可以用代码来验证,在不同时区服务上执行以下代码结果会不同(以python为例)
import time
timemktime((1970, 1, 1, 0, 0, 0, 0, 0, 0))
以上代码在东八区服务器运行得到 -306000,在西五区得到 180000,所以,要想得到正确的 UTC 时间戳,必须要在本地时间戳上减去这个时区0时的时间戳值。
版本3:
Python:
import time
import date time
dt = datetimedatetimeutcnow()
utc_float = timemktime(dttimetuple()) - timemktime((1970, 1, 1, 0, 0, 0, 0, 0, 0))
utc_time = int(utc_float)
PHP,直接用 DateTime 对象的方法得到:
$dt = new DateTime('now',new DateTimeZone('UTC')); // or simply: new DateTime('UTC')
$utc = $dt->getTimestamp();
done

不一样。
不同的设备,本地的系统时间是不一样的,假如你电脑设定的时间是9:00那么js获取的就是9:00但是如果此时别人的电脑时间是10:00在别人的电脑上js获取的时间就是10:00。
s是客服端脚本,是不能直接获取服务器端的时间的,除非你用asp,或者jsp,php,等写一个动态的js脚本。

时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

使用数字签名技术产生的数据, 签名的对象包括了原始文件信息、 签名参数、 签名时间等信息。广泛的运用在知识产权保护、 合同签字、 金融帐务、 电子报价投标、 股票交易等方面。

1自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。

2具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台” ,可与我国中科院国家授时中心时间同步。

比如在电子合同签署的过程中,时间戳技术就是必不可少的,我们就接入了由联合信任时间戳服务中心提供的时间戳服务,为电子签名添加时间属性,有效确认合同生成的时间以及文件内容的不可篡改性。

     你所描述的方法应该是不可行的,首先gps卫星信号就是提供标准时间信息的,一般一秒一次的,你接收到的时间信息本来就是唯一的,是不可能更改的。而时间戳的目的是为防止其他人故意更改时间签名,所以从gps卫星上面获取的时间信息就具有时间戳的这个性能(不可更改的),至于时间戳服务的解决应该从下面两个方面进行解决:

自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。

具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台” ,可与我国中科院国家授时中心时间同步。

其实时间戳的最核心部分就是第三方监测,没有这个就没有什么意义的。我是西安同步电子科技的工程师马工,如果有机会很高兴可以和你继续沟通时间频率方面的知识经验,如果有需要了解更多时间频率同步信息可以随时访问西安同步电子科技网站。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13019905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存