接口测试中遇到的一个与时区相关的问题

一、问题

一个case,本地跑没有任何问题,但一布到jenkins上,就会报错,错误的内容是实际返回的时间与断言里的预期时间差了8个小时

二、分析问题

怀疑是时区问题,因为与开发调接口时没有发现问题,怀疑与jenkins服务器上设置的时区相关,经查本地跑的接口时CST时区,但从jenkins上跑出来的是UTC时区。

检查我们的case,发现通过jenkins运行,在传date类型的参数时,落库的时候时间就出现了8小时的问题,我们传的date类型的参数,是通过时间戳转成的date,问题可能就出现在这个时间戳转date的方法中。

经检查我们的beanShell发现,方法中没有设置默认时区,都是按照我们本地的时区来的,我们本地的时区恰好与开发人员服务器的时区一致,所以本地运行没有出现问题,但在jenkins上运行的时候,jenkins上服务器的时区是UTC时区,所以出现了本地运行和在jenkins上运行时间差8小时的问题

三、解决方案

在时间戳转date的方法上设置默认时区

四、思考与总结

1.以往接口参数一般都是传时间戳,第一次遇到传date类型,以后接口设计是否应传时间戳更加合适一些?

2.涉及到date类型,需考虑时区问题

3.时间戳和时区。

时间戳:

时间不分东西南北、在地球的每一个角落都是相同的。他们都有一个相同的名字,叫时间戳。时间戳 指的就是Unix时间戳(Unix timestamp)。定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

时区:

时间戳 在地球的每一个角落都是相同的,但是在相同的时间点会有不同的表达方式,所以有了另外一个时间概念,叫时区。这里的时区与地区不是同一个概念,例如我们所在的时区叫 东八区 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概念解释 时区(Timezone) 为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳...
    黑炭妈阅读 6,983评论 0 5
  • iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大多...
    小李龍彪阅读 6,465评论 1 6
  • 这里主要讲述linux中时间和时区相关的原理。包括设置方法、配置、环境变量、以及库函数,及应用举例。 基本概念 系...
    QuietHeart阅读 2,644评论 0 3
  • 概述 Date对象是JavaScript提供的日期和时间的操作接口。它可以表示的时间范围是,1970年1月1日00...
    许先生__阅读 544评论 0 1
  • 第一讨厌,认识没几天就想上床,不答应他还跟你翻脸。就算用脚趾头想也能明白,这丫就是想上床而已。 第二讨厌,不知道他...
    我想到处看看阅读 647评论 0 0