比毫秒System.currentTimeMillis()更精確的時間戳(納米級時間戳)
1納秒=0.00000 0001秒
java的System.currentTimeMillis()和System.nanoTime()有什麼區別
java中System.nanoTime()返回的是納秒,nanoTime而返回的可能是任意時間,甚至可能是負數……按照API的說明,nanoTime主要的用途是衡量一個時間段,比如說一段程式碼執行所 用的時間,獲取資料庫連線所用的時間,網路訪問所用的時間等。另外,nanoTime提供了納秒級別的精度,但實際上獲得的值可能沒有精確到納秒。
但總的來說,這兩個函式的用途是完全不一樣的!。
java中System.currentTimeMillis()返回的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數,Date()其實就是相當於Date(System.currentTimeMillis());因為Date類還有構造Date(long date),用來計算long秒與1970年1月1日之間的毫秒差。。
[摘要:比來專案開闢,須要獵取到當前時光而且切確到微秒。然則一查材料發明乎只能切確到到毫秒級,經過 SimpleDateFormat formatter = new SimpleDateFormat(yyyyMMddHHmmssSSS); String str = formatter.format(new]
最近專案開發,需要獲取到當前時間並且精確到微秒。但是一查資料發現似乎只能精確到到毫秒級,通過
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String str = formatter.format(new Date());
或者
Calendar calendar = Calendar.getInstance();
long mm = calendar.get(Calendar.MILLISECOND);
最後幾經周折,可以通過c程式碼得到得到當前時間的微秒值,於是便通過jni方式得到了時間的微秒值。
其中c程式碼:
JNIEXPORT jlongArray JNICALL Java_com_test_ndkhelloword_MainActivity_getTimesFromJni(
JNIEnv *env, jobject thiz) {
jlongArray time = env->NewLongArray(2);
jlong temp[] = { 0, 0 };
struct timeval begin;
gettimeofday(&begin, NULL);
temp[0] = begin.tv_sec;
temp[1] = begin.tv_usec;
env->SetLongArrayRegion(time, 0, 2, temp);
return time;
}
還好最後找到了辦法,特此分享。