有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
在推文时间戳的计算——系统参数的简单运用中,我们介绍了什么是时间戳以及时间戳的计算—结合系统参数以及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元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:闫续文
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号