Вала: это правильный способ получить текущее время в миллисекундах?

Используя эту библиотеку с Vala:

http://valadoc.org/#!api=glib-2.0/GLib.DateTime

    GLib.DateTime now = new GLib.DateTime.now_local();

    var sec = now.to_unix()
    var msec = (sec * 1000) + now.get_microsecond();

это правильный способ получить текущее время в миллисекундах?

Есть ли способ лучше?

1 ответ

Решение

GLib.DateTime - правильный способ сделать это, и немного странно, что вы запрашиваете местное время, а затем конвертируете его в unix-время (которое неявно преобразуется в UTC). Однако реальная проблема заключается в том, что вы объединяете миллисекунды (1/1000 секунды) и микросекунды (1/1000000 секунды). Так что измените последнюю строку на

var msec = (sec * 1000) + (now.get_microsecond () / 1000);

В качестве альтернативы более простым способом было бы использовать GLib.get_real_time:

int64 msec = GLib.get_real_time () / 1000;

В зависимости от вашего варианта использования вы можете рассмотреть возможность использования монотонного времени вместо реального времени (см. GLib.get_monotonic_time

Другие вопросы по тегам