python 如何按分钟舍入时间戳?
python how to round a timestamp by minute?
大家好我正在使用这两个函数
def utc_to_local(utc_dt):
return utc_dt.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York'))
def perdelta(start, end, delta):
curr = start
while curr < end:
yield curr
curr += delta
for result in perdelta(utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes= 120)),utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes=60)), datetime.timedelta(minutes=1)):
print(result)
此代码的结果为我提供了我想要的时间戳列表
2021-02-02 19:00:03.438953-05:00
2021-02-02 19:01:03.438953-05:00
2021-02-02 19:02:03.438953-05:00
2021-02-02 19:03:03.438953-05:00
2021-02-02 19:04:03.438953-05:00
2021-02-02 19:05:03.438953-05:00
2021-02-02 19:06:03.438953-05:00
2021-02-02 19:07:03.438953-05:00
2021-02-02 19:08:03.438953-05:00
2021-02-02 19:09:03.438953-05:00
2021-02-02 19:10:03.438953-05:00
2021-02-02 19:11:03.438953-05:00
2021-02-02 19:12:03.438953-05:00
2021-02-02 19:13:03.438953-05:00
2021-02-02 19:14:03.438953-05:00
2021-02-02 19:15:03.438953-05:00
2021-02-02 19:16:03.438953-05:00
2021-02-02 19:17:03.438953-05:00
2021-02-02 19:18:03.438953-05:00
2021-02-02 19:19:03.438953-05:00
2021-02-02 19:20:03.438953-05:00
2021-02-02 19:21:03.438953-05:00
2021-02-02 19:22:03.438953-05:00
2021-02-02 19:23:03.438953-05:00
2021-02-02 19:24:03.438953-05:00
2021-02-02 19:25:03.438953-05:00
2021-02-02 19:26:03.438953-05:00
2021-02-02 19:27:03.438953-05:00
2021-02-02 19:28:03.438953-05:00
2021-02-02 19:29:03.438953-05:00
2021-02-02 19:30:03.438953-05:00
2021-02-02 19:31:03.438953-05:00
2021-02-02 19:32:03.438953-05:00
2021-02-02 19:33:03.438953-05:00
2021-02-02 19:34:03.438953-05:00
2021-02-02 19:35:03.438953-05:00
2021-02-02 19:36:03.438953-05:00
2021-02-02 19:37:03.438953-05:00
2021-02-02 19:38:03.438953-05:00
2021-02-02 19:39:03.438953-05:00
2021-02-02 19:40:03.438953-05:00
2021-02-02 19:41:03.438953-05:00
2021-02-02 19:42:03.438953-05:00
2021-02-02 19:43:03.438953-05:00
2021-02-02 19:44:03.438953-05:00
2021-02-02 19:45:03.438953-05:00
2021-02-02 19:46:03.438953-05:00
2021-02-02 19:47:03.438953-05:00
2021-02-02 19:48:03.438953-05:00
2021-02-02 19:49:03.438953-05:00
2021-02-02 19:50:03.438953-05:00
2021-02-02 19:51:03.438953-05:00
2021-02-02 19:52:03.438953-05:00
2021-02-02 19:53:03.438953-05:00
2021-02-02 19:54:03.438953-05:00
2021-02-02 19:55:03.438953-05:00
2021-02-02 19:56:03.438953-05:00
2021-02-02 19:57:03.438953-05:00
2021-02-02 19:58:03.438953-05:00
2021-02-02 19:59:03.438953-05:00
2021-02-02 20:00:03.438953-05:00
但我想要实现的是将每个时间戳舍入到最近的分钟。例如,我希望将 19:00:03.438953
、19:01:03.438953
、19:02:03.438953
、19:03:03.438953
转换为 19:00:00
、19:01:00
、19:02:00
。 .., ... 等等到最后的时间戳。我还没有弄清楚如何实现这一点。有什么想法吗?
您可以使用datetime.datetime.replace(microsecond=0)
示例:
import datetime
from dateutil import tz
now = datetime.datetime.now()
print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York')))
# > 2021-02-03 04:47:55.259843-05:00
print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York')).replace(microsecond=0))
# > 2021-02-03 04:47:55-05:00
大家好我正在使用这两个函数
def utc_to_local(utc_dt):
return utc_dt.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York'))
def perdelta(start, end, delta):
curr = start
while curr < end:
yield curr
curr += delta
for result in perdelta(utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes= 120)),utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes=60)), datetime.timedelta(minutes=1)):
print(result)
此代码的结果为我提供了我想要的时间戳列表
2021-02-02 19:00:03.438953-05:00
2021-02-02 19:01:03.438953-05:00
2021-02-02 19:02:03.438953-05:00
2021-02-02 19:03:03.438953-05:00
2021-02-02 19:04:03.438953-05:00
2021-02-02 19:05:03.438953-05:00
2021-02-02 19:06:03.438953-05:00
2021-02-02 19:07:03.438953-05:00
2021-02-02 19:08:03.438953-05:00
2021-02-02 19:09:03.438953-05:00
2021-02-02 19:10:03.438953-05:00
2021-02-02 19:11:03.438953-05:00
2021-02-02 19:12:03.438953-05:00
2021-02-02 19:13:03.438953-05:00
2021-02-02 19:14:03.438953-05:00
2021-02-02 19:15:03.438953-05:00
2021-02-02 19:16:03.438953-05:00
2021-02-02 19:17:03.438953-05:00
2021-02-02 19:18:03.438953-05:00
2021-02-02 19:19:03.438953-05:00
2021-02-02 19:20:03.438953-05:00
2021-02-02 19:21:03.438953-05:00
2021-02-02 19:22:03.438953-05:00
2021-02-02 19:23:03.438953-05:00
2021-02-02 19:24:03.438953-05:00
2021-02-02 19:25:03.438953-05:00
2021-02-02 19:26:03.438953-05:00
2021-02-02 19:27:03.438953-05:00
2021-02-02 19:28:03.438953-05:00
2021-02-02 19:29:03.438953-05:00
2021-02-02 19:30:03.438953-05:00
2021-02-02 19:31:03.438953-05:00
2021-02-02 19:32:03.438953-05:00
2021-02-02 19:33:03.438953-05:00
2021-02-02 19:34:03.438953-05:00
2021-02-02 19:35:03.438953-05:00
2021-02-02 19:36:03.438953-05:00
2021-02-02 19:37:03.438953-05:00
2021-02-02 19:38:03.438953-05:00
2021-02-02 19:39:03.438953-05:00
2021-02-02 19:40:03.438953-05:00
2021-02-02 19:41:03.438953-05:00
2021-02-02 19:42:03.438953-05:00
2021-02-02 19:43:03.438953-05:00
2021-02-02 19:44:03.438953-05:00
2021-02-02 19:45:03.438953-05:00
2021-02-02 19:46:03.438953-05:00
2021-02-02 19:47:03.438953-05:00
2021-02-02 19:48:03.438953-05:00
2021-02-02 19:49:03.438953-05:00
2021-02-02 19:50:03.438953-05:00
2021-02-02 19:51:03.438953-05:00
2021-02-02 19:52:03.438953-05:00
2021-02-02 19:53:03.438953-05:00
2021-02-02 19:54:03.438953-05:00
2021-02-02 19:55:03.438953-05:00
2021-02-02 19:56:03.438953-05:00
2021-02-02 19:57:03.438953-05:00
2021-02-02 19:58:03.438953-05:00
2021-02-02 19:59:03.438953-05:00
2021-02-02 20:00:03.438953-05:00
但我想要实现的是将每个时间戳舍入到最近的分钟。例如,我希望将 19:00:03.438953
、19:01:03.438953
、19:02:03.438953
、19:03:03.438953
转换为 19:00:00
、19:01:00
、19:02:00
。 .., ... 等等到最后的时间戳。我还没有弄清楚如何实现这一点。有什么想法吗?
您可以使用datetime.datetime.replace(microsecond=0)
示例:
import datetime
from dateutil import tz
now = datetime.datetime.now()
print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York')))
# > 2021-02-03 04:47:55.259843-05:00
print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York')).replace(microsecond=0))
# > 2021-02-03 04:47:55-05:00