Skip to content

Commit ab18935

Browse files
committed
chore: add documentation about timezone (#73)
1 parent 62f9350 commit ab18935

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

influxdb_client/client/write/point.py

+15
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ def __init__(self, measurement_name):
4545
self._write_precision = DEFAULT_WRITE_PRECISION
4646

4747
def time(self, time, write_precision=DEFAULT_WRITE_PRECISION):
48+
"""
49+
Specify timestamp for DataPoint with declared precision.
50+
If time doesn't have specified timezone we assume that timezone is UTC.
51+
52+
Examples::
53+
Point.measurement("h2o").field("val", 1).time("2009-11-10T23:00:00.123456Z")
54+
Point.measurement("h2o").field("val", 1).time(1257894000123456000)
55+
Point.measurement("h2o").field("val", 1).time(datetime(2009, 11, 10, 23, 0, 0, 123456))
56+
Point.measurement("h2o").field("val", 1).time(1257894000123456000, write_precision=WritePrecision.NS)
57+
58+
59+
:param time: the timestamp for your data
60+
:param write_precision: sets the precision for the supplied time values
61+
:return: this point
62+
"""
4863
self._write_precision = write_precision
4964
self._time = time
5065
return self

tests/test_point.py

+19-3
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,14 @@ def test_DateTimeFormatting(self):
185185
self.assertTrue("." not in lineProtocol)
186186

187187
def test_DateTimeUtc(self):
188-
dateTime = datetime(2015, 10, 15, 8, 20, 15)
188+
date_time = datetime(2015, 10, 15, 8, 20, 15)
189189

190190
point = Point.measurement("h2o") \
191191
.tag("location", "europe") \
192-
.field("level", 2)
192+
.field("level", 2) \
193+
.time(date_time)
193194

194-
# Assert.Throws < ArgumentException > (() = > point.time(dateTime, WritePrecision.Ms))
195+
self.assertEqual("h2o,location=europe level=2i 1444897215000000000", point.to_line_protocol())
195196

196197
def test_InstantFormatting(self):
197198
instant = "1970-01-01T00:00:45.999999999Z"
@@ -288,6 +289,21 @@ def test_only_infinity_values(self):
288289

289290
self.assertEqual("", _point.to_line_protocol())
290291

292+
def test_timezone(self):
293+
"""Test timezone in TestLineProtocol object."""
294+
dt = datetime(2009, 11, 10, 23, 0, 0, 123456)
295+
utc = UTC.localize(dt)
296+
berlin = timezone('Europe/Berlin').localize(dt)
297+
eastern = berlin.astimezone(timezone('US/Eastern'))
298+
299+
self.assertEqual("h2o val=1i 0", Point.measurement("h2o").field("val", 1).time(0).to_line_protocol())
300+
self.assertEqual("h2o val=1i 1257894000123456000", Point.measurement("h2o").field("val", 1).time("2009-11-10T23:00:00.123456Z").to_line_protocol())
301+
self.assertEqual("h2o val=1i 1257894000123456000", Point.measurement("h2o").field("val", 1).time(utc).to_line_protocol())
302+
self.assertEqual("h2o val=1i 1257894000123456000", Point.measurement("h2o").field("val", 1).time(dt).to_line_protocol())
303+
self.assertEqual("h2o val=1i 1257894000123456000", Point.measurement("h2o").field("val", 1).time(1257894000123456000, write_precision=WritePrecision.NS).to_line_protocol())
304+
self.assertEqual("h2o val=1i 1257890400123456000", Point.measurement("h2o").field("val", 1).time(eastern).to_line_protocol())
305+
self.assertEqual("h2o val=1i 1257890400123456000", Point.measurement("h2o").field("val", 1).time(berlin).to_line_protocol())
306+
291307

292308
if __name__ == '__main__':
293309
unittest.main()

0 commit comments

Comments
 (0)