簡體   English   中英

通過JNI c ++傳遞DateTime參數

[英]Pass DateTime arguments with JNI c++

我正在使用JNI,我需要將DateTime作為參數傳遞給方法。 我應該使用什么格式?

這是我的代碼示例:

int number = 10;
initial = env->GetMethodID(Simulator,"initialize", "(Ljava/util/Date;Ljava/util/Date;I)V");
if (env->ExceptionCheck()){
  cout << "Fail:";
}
env->CallVoidMethod(Simulation,initial,"2014/05/21T00:00:00","2014/05/21T23:59:59",number);

我需要將這些日期作為Ljava / util / Date參數而不是字符串傳遞,因為我無法更改JNI調用的Java代碼。

您只需要首先創建兩個java.util.Date對象。 像這樣:

int number = 10;
jmethodID initial = env->GetMethodID(Simulator,"initialize", "(Ljava/util/Date;Ljava/util/Date;I)V");
if (env->ExceptionCheck()){
  cout << "Fail:";
}
jclass dateType = env->FindClass("Ljava/util/Date;");
if(dateType == nullptr){
  cout << "Fail:";
}
jmethodID dateTypeConstructor= env->GetMethodID(dateType, "<init>", "(Ljava/lang/String;)V");
if(constructor == nullptr){
  cout << "Fail:";
}
jstring constructorString1 = env->NewStringUTF("2014/05/21T00:00:00");
jobject dateObject1 = env->NewObject(dateType , dateTypeConstructor, constructorString1);
if(dateObject1  == nullptr)
  cout << "Fail:";
}
jstring constructorString2 = env->NewStringUTF("2014/05/21T23:59:59");
jobject dateObject2 = env->NewObject(dateType , dateTypeConstructor, constructorString2);
if(dateObject2  == nullptr)
  cout << "Fail:";
}
env->CallVoidMethod(Simulation, initial, dateObject1, dateObject2, number);

從JDK 1.1開始不推薦使用構造方法Date(String s) ,但是如果必須使用SimpleDateFormat或僅可以用Java編寫靜態方法來為String返回一個java.util.Date對象,則原理是相同的。你傳遞給它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM