OLD | NEW |
| (Empty) |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 | |
6 """Provides common timestamp functions.""" | |
7 | |
8 import datetime | |
9 import pytz | |
10 | |
11 | |
12 def utctimestamp(dt): | |
13 """Converts a datetime object into a floating point timestamp since the epoch. | |
14 | |
15 dt is the datetime to convert. If dt is a naive (non-tz-aware) object, it | |
16 will implicitly be treated as UTC. | |
17 """ | |
18 epoch = datetime.datetime.utcfromtimestamp(0).replace(tzinfo=pytz.UTC) | |
19 # This check is from http://stackoverflow.com/a/27596917/3984761. | |
20 if dt.tzinfo is None or dt.tzinfo.utcoffset(dt) is None: | |
21 dt = dt.replace(tzinfo=pytz.UTC) | |
22 return (dt - epoch).total_seconds() | |
23 | |
24 | |
25 def utcnow_ts(): # pragma: no cover | |
26 """Returns the floating point number of seconds since the UTC epoch.""" | |
27 return utctimestamp(datetime.datetime.utcnow()) | |
OLD | NEW |