在推文
时间戳的计算——系统参数的简单运用
中,我们介绍了什么是
时间戳
以及时间戳的计算—结合
系统参数
以及
tc()函数
快速得到当前时间的时间戳。那么反过来我们怎么把时间戳转为对应的时间呢?
首先,时间戳是什么?
时间戳(timestamp)
是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的
总秒数
,能够唯一地标识某一刻的时间。
接下来我们来看一个例子,笔者在爬取网页数据的时候发现这样一个问题,如下:
图一是网页上显示的时间,图二是网页源代码中显示的对应时间戳数据。接下来我们使用
display
命令把时间戳的显示格式从
毫秒
转化为
年月日小时分钟
,看看是否和网页上显示的一致。
display %tcCCYY-NN-DD_HH:MM 1286948375000
我们发现时间不一致,和真实的时间差了10年零8个小时。原因是stata自身的时间数据都是以
1960年
1月1号00:00为基准的数据,而时间戳数据本身是以北京时间
1970年
01月01日08时00分00秒作为基准的数据。如果我们直接把网页中的时间戳拿到stata上使用,相比着真实时间stata显示的时间会减少
10年零8个小时
。因此在此时间戳的基础上加10年零8个小时的毫秒数就可以啦!
dis %tcCCYY-NN-DD_HH:MM clock("1970-01-01","YMD")+8*60*60*1000+1286948375000
clock(s1,s2)
时间函数可以计算从1960-01-01 00:00开始到时间s1的
毫秒数
,s1的显示格式为s2。
在我们爬出数据整理之后,我们得到的是一列时间戳数据,此时我们可以通过
format
命令更改时间戳变量的显示格式。举例:
我们现在有一列时间戳变量time1,接着生成一个变量temp2、temp3为时间戳对应的时间,程序如下:
gen double time2 = time1+clock("1970-01-01","YMD")+8*60*60*1000
format %tcCCYY-NN-DD_HH:MM time2
gen time3 = time1+clock("1970-01-01","YMD")+8*60*60*1000
format %tcCCYY-NN-DD_HH:MM time3
之所以生成
double
类型
的数据是因为数据位数太多的时候,由于科学计数法的影响,可能会造成时间上的不精确,如下图所示:
这篇推文我们简单介绍了一个时间函数
clock(s1,s2[,Y])
的一个小应用。在推文
日期函数大汇总(一)
中,我们介绍了一部分日期函数,我们将在其基础上,在之后的推文中给大家介绍更多有用的时间函数,敬请期待!
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~