forked from pandas-dev/pandas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimestamp.py
156 lines (105 loc) · 3.68 KB
/
timestamp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
from datetime import datetime
import numpy as np
import pytz
from pandas import Timestamp
from .tslib import _tzs
class TimestampConstruction:
def setup(self):
self.npdatetime64 = np.datetime64("2020-01-01 00:00:00")
self.dttime_unaware = datetime(2020, 1, 1, 0, 0, 0)
self.dttime_aware = datetime(2020, 1, 1, 0, 0, 0, 0, pytz.UTC)
self.ts = Timestamp("2020-01-01 00:00:00")
def time_parse_iso8601_no_tz(self):
Timestamp("2017-08-25 08:16:14")
def time_parse_iso8601_tz(self):
Timestamp("2017-08-25 08:16:14-0500")
def time_parse_dateutil(self):
Timestamp("2017/08/25 08:16:14 AM")
def time_parse_today(self):
Timestamp("today")
def time_parse_now(self):
Timestamp("now")
def time_fromordinal(self):
Timestamp.fromordinal(730120)
def time_fromtimestamp(self):
Timestamp.fromtimestamp(1515448538)
def time_from_npdatetime64(self):
Timestamp(self.npdatetime64)
def time_from_datetime_unaware(self):
Timestamp(self.dttime_unaware)
def time_from_datetime_aware(self):
Timestamp(self.dttime_aware)
def time_from_pd_timestamp(self):
Timestamp(self.ts)
class TimestampProperties:
_freqs = [None, "B"]
params = [_tzs, _freqs]
param_names = ["tz", "freq"]
def setup(self, tz, freq):
self.ts = Timestamp("2017-08-25 08:16:14", tzinfo=tz, freq=freq)
def time_tz(self, tz, freq):
self.ts.tz
def time_dayofweek(self, tz, freq):
self.ts.dayofweek
def time_dayofyear(self, tz, freq):
self.ts.dayofyear
def time_week(self, tz, freq):
self.ts.week
def time_quarter(self, tz, freq):
self.ts.quarter
def time_days_in_month(self, tz, freq):
self.ts.days_in_month
def time_freqstr(self, tz, freq):
self.ts.freqstr
def time_is_month_start(self, tz, freq):
self.ts.is_month_start
def time_is_month_end(self, tz, freq):
self.ts.is_month_end
def time_is_quarter_start(self, tz, freq):
self.ts.is_quarter_start
def time_is_quarter_end(self, tz, freq):
self.ts.is_quarter_end
def time_is_year_start(self, tz, freq):
self.ts.is_year_start
def time_is_year_end(self, tz, freq):
self.ts.is_year_end
def time_is_leap_year(self, tz, freq):
self.ts.is_leap_year
def time_microsecond(self, tz, freq):
self.ts.microsecond
def time_month_name(self, tz, freq):
self.ts.month_name()
def time_weekday_name(self, tz, freq):
self.ts.day_name()
class TimestampOps:
params = _tzs
param_names = ["tz"]
def setup(self, tz):
self.ts = Timestamp("2017-08-25 08:16:14", tz=tz)
def time_replace_tz(self, tz):
self.ts.replace(tzinfo=pytz.timezone("US/Eastern"))
def time_replace_None(self, tz):
self.ts.replace(tzinfo=None)
def time_to_pydatetime(self, tz):
self.ts.to_pydatetime()
def time_normalize(self, tz):
self.ts.normalize()
def time_tz_convert(self, tz):
if self.ts.tz is not None:
self.ts.tz_convert(tz)
def time_tz_localize(self, tz):
if self.ts.tz is None:
self.ts.tz_localize(tz)
def time_to_julian_date(self, tz):
self.ts.to_julian_date()
def time_floor(self, tz):
self.ts.floor("5T")
def time_ceil(self, tz):
self.ts.ceil("5T")
class TimestampAcrossDst:
def setup(self):
dt = datetime(2016, 3, 27, 1)
self.tzinfo = pytz.timezone("CET").localize(dt, is_dst=False).tzinfo
self.ts2 = Timestamp(dt)
def time_replace_across_dst(self):
self.ts2.replace(tzinfo=self.tzinfo)