Вала: это правильный способ получить текущее время в миллисекундах?
Используя эту библиотеку с 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