时间戳的计算——系统参数的简单运用

2017-04-06 薛原 爬虫俱乐部 爬虫俱乐部

前两天笔者在爬一个网页的时候,需要传输的内容中有一部分是一个十位数字1491277727,当然这个数字也不是固定不变的,每次访问时都会改变,同时也无法从先前加载的网页中获取,这个究竟是什么呢?经过笔者多方查找,发现这个东西叫做timestamp,中文翻译为时间戳




时间戳,是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,能够唯一地标识某一刻的时间。那么我们怎么获取时间戳呢?


在Stata中有一个命令叫做timestamp,我们可以使用ssc命令安装

ssc install timestamp


根据这个命令的help文件,我们要运行这个命令,还需要先安装两个命令:insheetjsonlibjson。然后,我们可以运行这个命令了。例如我们要获取当前时间的时间戳:

timestamp


我们可以看到,返回的结果显示时间戳的数据是从http://www.convert-unix-time.com这个网站获取的。获取的数据可以通过返回值来调用。

return list




使 用timestamp命令获取时间戳很方便,但存在一个问题:这个网页是国外的,有时访问国外网站速度慢,会导致获取的时间戳滞后,而有些网页链接或验证 的时效性,有的甚至只有几秒钟,这就会导致网页无法抓取。那么我们还有什么方法获得时间戳呢?之前我们发了一篇推文——朝花夕拾 | Stata的环境参数及提取。有的朋友留言说不清楚这些环境参数有什么用处。这里我们就可以用其中两个参数来计算时间戳——c(current_date)c(current_time)


在之前的推文中,我们介绍过了c(current_date)和c(current_time)返回的是当日的日期和当前的时间,例如:

di c(current_date)

di c(current_time)


我们也知道时间戳是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,那么我们就可以使用这两个参数来计算当前时间的时间戳。


在Stata里面,有一个函数tc()可以帮助我们计算从1960年1月1日到给定时间的毫秒数,比如我们要查看当前时间,可以将tc()函数和两个系统参数很方便的结合在一起

disp tc(`c(current_date)' `c(current_time)')


但是这里显示的是科学计数法的形式,我们想要一个长整型的结果,只需要把显示的格式加上去就可以了:

disp %15.0g tc(`c(current_date)' `c(current_time)')


我们要注意,这里显示的结果是毫秒数,我们需要转换成秒,需要除以1000,所以我们的程序应该这么写:

disp %12.0g tc(`c(current_date)' `c(current_time)')/1000


由 于我们调用了系统日期和时间,所以每次的结果都会有所区别。是不是这个数字就使我们要的时间戳呢?这里需要注意的是,Stata计算时间是从1960年 01月01日00时00分00秒开始的,但是时间戳是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00 分00秒)起至现在的总秒数,所以我们这里得到的数字还要减去北京时间1960年01月01日00时00分00秒到1970年01月01日08时00分 00秒的秒数。所以我们的程序应该写成:

disp %12.0g (tc(`c(current_date)' `c(current_time)')-tc(1 jan 1970 08:00:00))/1000


这样,我们就可以计算出当前时间的时间戳了。但要注意的是不是所有需要时间戳的网页都需要的是当前的,我们还要进一步对网页进行分析。



以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

文字编辑:强宇曦

技术总编:刘贝贝



往期推文推荐:

1.中国高校财经、管理与综合类期刊灌水排行榜

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word


关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号