vala:这是以毫秒为单位获取当前时间的正确方法吗?

时间:2013-10-19 15:42:16

标签: vala

将此库与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 个答案:

答案 0 :(得分:10)

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