我在網上搜索,發現severalsources,談論轉換Unix時間戳爲各種可行的格式,但沒有讓我實際上從Stata內獲得這樣一個時間戳。截至目前,我用有沒有辦法在Stata中獲得Unix時間戳?
local curr_date = c(current_date)
local curr_time = c(current_time)
變化,以時間戳施加日誌,數據集等,但我想只要使用Unix時間戳在幾秒鐘內,如果可能的話。
我在網上搜索,發現severalsources,談論轉換Unix時間戳爲各種可行的格式,但沒有讓我實際上從Stata內獲得這樣一個時間戳。截至目前,我用有沒有辦法在Stata中獲得Unix時間戳?
local curr_date = c(current_date)
local curr_time = c(current_time)
變化,以時間戳施加日誌,數據集等,但我想只要使用Unix時間戳在幾秒鐘內,如果可能的話。
你熟悉help datetime?我的理解是Unix的時間戳會是這樣的
display %12.0g clock("`c(current_date)' `c(current_time)'", "DMY hms")/1000 - clock("1 Jan 1970", "DMY")/1000
這當然就可以在其他情況下使用爲好。 (我不是C程序員,我是一名Stata用戶,但我確實明白,對於本網站上的大多數人來說,寫入a snippet of C code會更容易進入Stata的內容而不是RTFM ......這在其中是令人欽佩的自己的方式從那裏我坐,當然)
達到此目的的一種方法是編寫一個簡單的插件。編譯此代碼,在一個名爲unixtimestamp.c
#include "stplugin.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
STDLL stata_call(int argc, char *argv[])
{
time_t seconds;
seconds = time(NULL);
char buf[33];
sprintf(buf, "%d", seconds);
SF_display(buf);
return(0);
}
與stplugin.h和stplugin.c在使用此命令(用於Linux系統)相同目錄下的文件:
gcc -O3 -shared -DSYSTEM=OPUNIX -fPIC stplugin.c unix_timestamp.c -o unixtimestamp.plugin
的guide創建插件使用這個命令:
gcc -shared -DSYSTEM=OPUNIX stplugin.c unixtimestamp.c -o unixtimestamp.plugin
但在某些系統上,這會給出錯誤提示您使用-fPIC
標誌,這就是爲什麼我將它包含在我的命令中。另外,對於這樣一個簡單的插件來說,優化並不是真的需要,但是我不管它們。
unixtimestamp.plugin
應該放在ado/personal/
目錄中。運行Stata的sysdir
函數來查找它的位置。在我的系統上,它是HOME/ado/personal/
,所以我在那裏複製了插件。如果沒有顯示錯誤消息
program unixtimestamp, plugin
,運行帶有插件:那麼,從塔塔,加載插件
plugin call unixtimestamp
與任何Stata的命令,您還可以使用宏來簡化這個如果你打算使用此命令頻繁:
local unixtime plugin call unixtimestamp
`unixtime'
我用下面的搶日期/時間標記:
更新: 您可以使用Unix外殼由前綴直接命令裏面的Stata他們感嘆號。回覆Unix時間嘗試:
!date +%s
1344341160
對不起,我不認爲我的問題很清楚。我已經有了以這種格式獲取時間戳的方法,但我需要幾秒鐘的時間戳。我原來的問題中使用'creturn'的命令已經給了我這種格式的時間戳。 – 2012-08-07 11:14:06
這是一個很好的功能,我沒有看到當我閱讀文檔,但我注意到使用它時有些奇怪。我用那個Stata命令,在時間過後的一秒鐘之後。Python中的time()'命令和已知的準確的Stata命令,而Stata命令大約需要18,000 **秒的時間,如果我需要精確的時間戳,這是不可用的。我用C'time'函數進行了相同的測試,看到了類似的結果。 – 2012-07-27 18:57:47
目前我沒有我的插件,但我將在今天晚上的do文件中使用這兩個命令並測量差異(如果有的話)。這樣,每次運行命令之間的時間僅爲幾毫秒,而不是手動測試時的1或2秒。但是,即使包括那幾秒鐘也不足以解釋我不認爲的區別。 – 2012-07-27 18:57:54
18000秒的差異聽起來很像我的5個時區差異。也就是說,您的計算機運行紐約或塔什干當地時間,而不是GMT時間。 – StasK 2012-07-27 20:00:03