java - JNI 返回日期

标签 java android c++ c java-native-interface

我有使用 const struct tm myTimeInfo 操作的 JNI 方法。最后,我想将结果返回给 Java。但是,我不能直接返回 Date。到目前为止,我将 struct tm 转换为 jstring 并在 java 中转换回 Date,这看起来很奇怪。有没有办法直接返回Date填满了struct tm

我目前的解决方案是这样的:

JNIEXPORT jstring JNICALL package_getTimeLineEndUTC(JNIEnv *env, jobject thiz) {
    const struct tm timeInfo = generateTime();
    return env->NewStringUTF(asctime(&timeInfo));
}

最佳答案

您可以返回一个long,即自纪元以来的毫秒数,而不是返回一个字符串:

const struct tm timeInfo = generateTime();
return mktime(&timeInfo) * 1000;

然后在java端使用Date(long date)

关于java - JNI 返回日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689459/

相关文章:

Android 服务在 Runnable 仍在执行时关闭

C++ 类和相互关联的对象形成一个循环

java - 将 jsf web.xml 中的页面名称与文件名解耦

android - 如何使用安卓ViewPager?

java - 创建一个无限运行的基于事件的java程序

c++ - 如何访问嵌套的 STL 元素?

c++ - 整数溢出和整数限制

java - Linux 中 USB 串行端口发生意外变化

Java同时读取两个文本文件

java - 将文件添加到 zip 文件 java 中的文件夹