Как я могу получить местный часовой пояс браузера с помощью Rust js_sys?

Я использую js_sys crate для запуска кода Rust в браузере.

Трудно понять, как использовать Intl::DateTimeFormat.

Все, что я хочу, это получить местный часовой пояс, что делается с помощью этого JS-кода:

const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;

Похоже, что в Rust это не работает:

let tz = Intl::DateTimeFormat().resolved_options().time_zone();

  --> src/lib.rs:14:14
   |
14 |     let tz = Intl::DateTimeFormat().resolved_options().time_zone();
   |              ^^^^^^^^^^^^^^^^^^^^ did you mean `Intl::DateTimeFormat { /* fields */ }`?

Кажется, хочет, чтобы я создал новый DateTimeFormat struct, но я просто хочу получить "по умолчанию", если есть такая...

Как я могу заставить это работать?

1 ответ

Благодаря @pauan и, как было предложено @SOFe в комментариях, вот как это сделать:

let options = Intl::DateTimeFormat::new(&Array::new(), &Object::new())
        .resolved_options();

let tz = Reflect::get(&options, &JsValue::from("timeZone"))
        .expect("Cannot get timeZone")
        .as_string()
        .expect("timeZone is not a String");
Другие вопросы по тегам