| Index: infra/libs/time_functions/timestamp.py
|
| diff --git a/infra/libs/time_functions/timestamp.py b/infra/libs/time_functions/timestamp.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2bda0a10638cb787c32abbad85e96942873055f3
|
| --- /dev/null
|
| +++ b/infra/libs/time_functions/timestamp.py
|
| @@ -0,0 +1,27 @@
|
| +# Copyright 2015 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +
|
| +"""Provides common timestamp functions."""
|
| +
|
| +import datetime
|
| +import pytz
|
| +
|
| +
|
| +def utctimestamp(dt):
|
| + """Converts a datetime object into a floating point timestamp since the epoch.
|
| +
|
| + dt is the datetime to convert. If dt is a naive (non-tz-aware) object, it
|
| + will implicitly be treated as UTC.
|
| + """
|
| + epoch = datetime.datetime.utcfromtimestamp(0).replace(tzinfo=pytz.UTC)
|
| + # This check is from http://stackoverflow.com/a/27596917/3984761.
|
| + if dt.tzinfo is None or dt.tzinfo.utcoffset(dt) is None:
|
| + dt = dt.replace(tzinfo=pytz.UTC)
|
| + return (dt - epoch).total_seconds()
|
| +
|
| +
|
| +def utcnow_ts(): # pragma: no cover
|
| + """Returns the floating point number of seconds since the UTC epoch."""
|
| + return utctimestamp(datetime.datetime.utcnow())
|
|
|