static jlong DateIntervalFormat_createDateIntervalFormat(JNIEnv* env, jclass, jstring javaSkeleton, jstring javaLocaleName, jstring javaTzName) { ScopedIcuLocale icuLocale(env, javaLocaleName); if (!icuLocale.valid()) { return 0; } ScopedJavaUnicodeString skeletonHolder(env, javaSkeleton); if (!skeletonHolder.valid()) { return 0; } UErrorCode status = U_ZERO_ERROR; DateIntervalFormat* formatter(DateIntervalFormat::createInstance(skeletonHolder.unicodeString(), icuLocale.locale(), status)); if (maybeThrowIcuException(env, "DateIntervalFormat::createInstance", status)) { return 0; } ScopedJavaUnicodeString tzNameHolder(env, javaTzName); if (!tzNameHolder.valid()) { return 0; } formatter->adoptTimeZone(TimeZone::createTimeZone(tzNameHolder.unicodeString())); return reinterpret_cast<uintptr_t>(formatter); }
extern "C" jstring Java_libcore_icu_ICU_getBestDateTimePatternNative(JNIEnv* env, jclass, jstring javaSkeleton, jstring javaLocaleName) { Locale locale = getLocale(env, javaLocaleName); UErrorCode status = U_ZERO_ERROR; UniquePtr<DateTimePatternGenerator> generator(DateTimePatternGenerator::createInstance(locale, status)); if (maybeThrowIcuException(env, "DateTimePatternGenerator::createInstance", status)) { return NULL; } ScopedJavaUnicodeString skeletonHolder(env, javaSkeleton); if (!skeletonHolder.valid()) { return NULL; } UnicodeString result(generator->getBestPattern(skeletonHolder.unicodeString(), status)); if (maybeThrowIcuException(env, "DateTimePatternGenerator::getBestPattern", status)) { return NULL; } return env->NewString(result.getBuffer(), result.length()); }
static jstring ICU_getBestDateTimePatternNative(JNIEnv* env, jclass, jstring javaSkeleton, jstring javaLanguageTag) { ScopedIcuLocale icuLocale(env, javaLanguageTag); if (!icuLocale.valid()) { return NULL; } UErrorCode status = U_ZERO_ERROR; UniquePtr<DateTimePatternGenerator> generator(DateTimePatternGenerator::createInstance(icuLocale.locale(), status)); if (maybeThrowIcuException(env, "DateTimePatternGenerator::createInstance", status)) { return NULL; } ScopedJavaUnicodeString skeletonHolder(env, javaSkeleton); if (!skeletonHolder.valid()) { return NULL; } UnicodeString result(generator->getBestPattern(skeletonHolder.unicodeString(), status)); if (maybeThrowIcuException(env, "DateTimePatternGenerator::getBestPattern", status)) { return NULL; } return env->NewString(result.getBuffer(), result.length()); }