获取北京时间授时api stm32 esp8266获取北京时间、年月日、星期api GMT格林威时间转换北京时间

苏宁获取北京时间的api不要太方便:http://quan.suning.com/getSysTime.do

使用 Fidder抓包调试,查看HTTP返回报文:

 

双击左侧抓取到的HTTP返回报文。使用 SyntaxView 插件查看的返回消息。

HTTP返回的消息:

{"sysTime2":"2020-08-07 16:33:25","sysTime1":"20200807163325"}

则当前的北京时间为: 2020年8月7日  16时33分25秒

有年月日,有时间。美中不足的是没有 星期几

 

如果要获取星期几,可以从 HTTP返回报文的帧头提取

使用 Raw插件查看。

HTTP/1.1 200 OK
Date: Fri, 07 Aug 2020 08:33:25 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 62
Connection: keep-alive
Server: styx
Set-Cookie: tradeLdc=NJYH;Expires=Fri, 07-Aug-20 20:33:25 GMT
Set-Cookie: tradeLdc=NJGX_YG;Expires=Fri, 07-Aug-20 20:33:25 GMT
Cache-Control: no-cache,no-store,max-age=0,s-maxage=0
Access-Control-Allow-Credentials: true
X-Ser: BC15_yd-anhui-huainan-4-cache-1
X-Cache: MISS from BC15_yd-anhui-huainan-4-cache-1(baishan)

{"sysTime2":"2020-08-07 16:33:25","sysTime1":"20200807163325"}

 

Date: Fri, 07 Aug 2020 08:33:25 GMT

HTTP返回报文的帧头,携带有 GMT 格林威治标准时间,我们可以从中算出其他时区的时间。

北京时间是 GMT+8小时。而星期可不像日期那样分大小月平闰年,是可以完全无差别计算的。

所以只要将获取到的 GMT时间+8,如果 (+8后的值 > 24:00:00),则 星期+1,否则 星期不变。

如果 星期 > 7,星期 -= 7。

 

- 例如现在GMT时间为:08:33:25 ,推算出北京时间为:16:33:25

而(16:33:25 < 24:00:00),则星期不变。

 

- 如果返回消息为:Date: Fri, 07 Aug 2020 20:33:25 GMT

GMT时间为:20:33:25 ,推算出北京时间为:28:33:25

而(28:33:25 > 24:00:00),则星期+1,Fri星期五 变为 Sat星期六。

 

- 如果返回消息为:Date: Sun, 07 Aug 2020 20:33:25 GMT

GMT时间为:20:33:25 ,推算出北京时间为:28:33:25

而(28:33:25 > 24:00:00),则星期+1,Sun星期七 变为 星期八。

而 (星期八 > 星期七),则 星期八 -= 7,即为 Mon星期一。

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C++语言相机时间转换并计算时间差的代码如下: ```cpp #include <iostream> #include <chrono> using namespace std; // 定义相机时间戳类型 typedef long long CameraTimestamp; // 定义Unix时间戳类型 typedef long long UnixTimestamp; // 获取当前Unix时间戳 UnixTimestamp getUnixTimestamp() { return chrono::duration_cast<chrono::milliseconds>( chrono::system_clock::now().time_since_epoch() ).count(); } // 将相机时间转换为Unix时间戳 UnixTimestamp convertCameraTimestampToUnixTimestamp(CameraTimestamp cameraTimestamp) { // 计算Unix时间戳与相机时间戳的差值 UnixTimestamp unixTimestamp = getUnixTimestamp(); CameraTimestamp cameraTimeDiff = unixTimestamp * 1000 - cameraTimestamp; // 计算转换后的Unix时间戳 UnixTimestamp convertedUnixTimestamp = unixTimestamp - cameraTimeDiff / 1000; return convertedUnixTimestamp; } int main() { // 测试数据 CameraTimestamp startCameraTimestamp = 1622665247000; CameraTimestamp endCameraTimestamp = 1622665250000; // 将相机时间转换为Unix时间戳 UnixTimestamp startUnixTimestamp = convertCameraTimestampToUnixTimestamp(startCameraTimestamp); UnixTimestamp endUnixTimestamp = convertCameraTimestampToUnixTimestamp(endCameraTimestamp); // 计算时间差 UnixTimestamp timeDiff = endUnixTimestamp - startUnixTimestamp; // 输出结果 cout << "Start camera timestamp: " << startCameraTimestamp << endl; cout << "End camera timestamp: " << endCameraTimestamp << endl; cout << "Time difference: " << timeDiff << " ms" << endl; return 0; } ``` 其中,`getUnixTimestamp`函数用于获取当前Unix时间戳;`convertCameraTimestampToUnixTimestamp`函数用于将相机时间转换为Unix时间戳;`main`函数为测试函数,用于测试转换结果并计算时间差。测试数据中,`startCameraTimestamp`表示开始时间的相机时间戳,`endCameraTimestamp`表示结束时间的相机时间戳。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值